GVKun编程网logo

使用es6类时,React中的“ super()”和“ super(props)”有什么区别?(react中props和state的区别)

9

本文将为您提供关于使用es6类时,React中的“super的详细介绍,我们还将为您解释”和“super的相关知识,同时,我们还将为您提供关于Bash中的“$@”和“$*”有什么区别?、Docker中

本文将为您提供关于使用es6类时,React中的“ super的详细介绍,我们还将为您解释”和“ super的相关知识,同时,我们还将为您提供关于Bash中的“$@”和“$*”有什么区别?、Docker 中的“公开”和“发布”有什么区别?、Docker中的“公开”和“发布”有什么区别?、ES6类中对super(props)的调用重要吗?的实用信息。

本文目录一览:

使用es6类时,React中的“ super()”和“ super(props)”有什么区别?(react中props和state的区别)

使用es6类时,React中的“ super()”和“ super(props)”有什么区别?(react中props和state的区别)

当是重要的传球propssuper()了,为什么?

class MyComponent extends React.Component {  constructor(props) {    super(); // or super(props) ?  }}

答案1

小编典典

只有一种原因需要传递propssuper()

当您要this.props在构造函数中访问时。

通过:

class MyComponent extends React.Component {        constructor(props) {        super(props)        console.log(this.props)        // -> { icon: ''home'', … }    }}

未通过:

class MyComponent extends React.Component {        constructor(props) {        super()        console.log(this.props)        // -> undefined        // Props parameter is still available        console.log(props)        // -> { icon: ''home'', … }    }    render() {        // No difference outside constructor        console.log(this.props)        // -> { icon: ''home'', … }    }}

注意,通过或不通过props,以super没有影响
对以后的用途this.props之外constructor。也就是说rendershouldComponentUpdate或事件处理程序
始终 可以访问它。

这是索菲·阿尔珀特(Sophie Alpert)对类似问题的回答中明确指出的。


建议使用“ 状态和生命周期,将本地状态添加到类,第2点”中的文档:

类组件应始终使用调用基本构造函数props

但是,没有提供任何理由。我们可以推测它是由于子类化还是出于将来的兼容性。

(感谢@MattBrowne的链接)

Bash中的“$@”和“$*”有什么区别?

Bash中的“$@”和“$*”有什么区别?

参见英文答案 > What is the difference between $@ and $* in shell scripts?3答案在我看来,他们都存储所有的命令行参数。

那么两者之间有区别吗?

区别是微妙的; “$ *”创建一个由$ IFS变量分隔的参数,而“$ @”将扩展为单独的参数。例如,考虑:
for i in "$@"; do echo "@ '$i'"; done
for i in "$*"; do echo "* '$i'"; done

使用多个参数运行时:

./testvar foo bar baz 'long arg'
@ 'foo'
@ 'bar'
@ 'baz'
@ 'long arg'
* 'foo bar baz long arg'

更多细节:

http://www.gnu.org/software/bash/manual/bashref.html#Special-Parameters

$ *

扩展为位置参数,从一个开始。当扩展出现在双引号内时,它扩展为单个单词,每个参数的值由IFS特殊变量的第一个字符分隔。也就是说,“$ *”等价于“$ 1c $ 2c …”,其中c是IFS变量值的第一个字符。如果未设置IFS,则参数由空格分隔。如果IFS为null,则连接参数时不插入分隔符。

$ @

扩展为位置参数,从一个开始。当扩展出现在双引号内时,每个参数扩展为单独的单词。也就是说,“$ @”等价于“$ 1”“$ 2”….如果在单词中出现双引号扩展,则将第一个参数的扩展与原始单词的开头部分合并,最后一个参数的扩展与原始单词的最后一部分连接。当没有位置参数时,“$ @”和$ @展开为无(即,它们被删除)。

Docker 中的“公开”和“发布”有什么区别?

Docker 中的“公开”和“发布”有什么区别?

我正在试验 Dockerfiles,我想我理解了大部分逻辑。但是,在这种情况下,我看不出“公开”和“发布”端口之间的区别。

我首先看到的所有教程都将EXPOSE命令包含在 Dockerfile 中:

...
EXPOSE 8080
...

然后他们从这个 Dockerfile 构建一个镜像:

$ docker build -t an_image - < Dockerfile

然后在运行镜像的时候 发布 和上面一样的端口:

$ docker run -d -p 8080 an_image

或使用发布所有端口

$ docker run -d -P an_image

如果无论如何都会发布,那么在 Dockerfile 中公开端口有什么意义?是否需要先公开一个端口,然后 发布它?实际上,我想指定创建映像时将在
Dockerfile 中使用的所有端口,然后不再打扰它们,只需使用以下命令运行它们:

$ docker run -d an_image

这可能吗?

Docker中的“公开”和“发布”有什么区别?

Docker中的“公开”和“发布”有什么区别?

如何解决Docker中的“公开”和“发布”有什么区别??

基本上,您有三个选择:

  1. 既不指定EXPOSE也不-p
  2. 只指定 EXPOSE
  3. 指定EXPOSE-p

1)如果您既未指定EXPOSE也不指定-p,则只能从容器本身 内部 访问容器中的服务。

2)如果您EXPOSE使用端口,则无法从Docker外部访问容器中的服务,而可以从其他Docker容器内部访问容器中的服务。因此,这对于容器间的通信很有用。

3)如果你EXPOSE-p一个端口,在容器中的服务是从任何地方访问,甚至泊坞窗外面。

两者分开的原因是恕我直言,因为:

  • 选择主机端口取决于主机,因此不属于Dockerfile(否则,将取决于主机),
  • 通常,只要可以从其他容器访问某个容器中的服务就足够了。

该文档明确指出:

EXPOSE指令公开了供链接使用的端口。

它还为您指出了如何链接容器,这基本上就是我所说的容器间通信。

PS:如果可以-p,但是不这样做EXPOSE,Docker会执行隐式EXPOSE。这是因为如果某个端口向公众开放,那么它也会自动向其他Docker容器开放。因此-p包括EXPOSE。这就是为什么我没有将其列为第四种情况。

解决方法

我正在试验Dockerfile,我想我了解大多数逻辑。但是,在这种情况下,我看不到“公开”和“发布”端口之间的区别。

我首先看过的所有教程都将EXPOSE命令包含在Dockerfile中:

...
EXPOSE 8080
...

然后,他们从此Dockerfile构建映像:

$ docker build -t an_image - < Dockerfile

然后在运行映像时 发布 与上述相同的端口:

$ docker run -d -p 8080 an_image

或使用以下命令发布所有端口

$ docker run -d -P an_image

如果仍要发布端口,则在Dockerfile中公开端口有什么意义?是否需要先公开一个端口,然后 再不
发布它?实际上,我想指定在创建映像时将在Dockerfile中使用的所有端口,然后不再麻烦它们,只需使用以下命令运行它们:

$ docker run -d an_image

这可能吗?

ES6类中对super(props)的调用重要吗?

ES6类中对super(props)的调用重要吗?

假设我有以下课程:

class Tabs extends React.Component {
  displayName: Tabs;

  static propTypes = {
  selected: React.PropTypes.number,children: React.PropTypes.oneOfType([
    React.PropTypes.array,React.PropTypes.element
  ]).isRequired
  };

  constructor() {
  super();
  this.state = {
    selected: 0,maxSelected: 0
  };

  render() {
    return(
      <div>
       {this.props.selected}
       {this.props.children}
      </div>
    );
  }
};

我想知道是否传递以下构造函数很重要:

constructor(props) {
  super(props);
}

我当前的代码工作正常,但是我想知道这是否是一个好习惯。

今天关于使用es6类时,React中的“ super”和“ super的分享就到这里,希望大家有所收获,若想了解更多关于Bash中的“$@”和“$*”有什么区别?、Docker 中的“公开”和“发布”有什么区别?、Docker中的“公开”和“发布”有什么区别?、ES6类中对super(props)的调用重要吗?等相关知识,可以在本站进行查询。

本文标签: