Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么有些人在定义React组件时使用state而不是this.state?_Javascript_Reactjs_Meteor_Mapbox Gl Js - Fatal编程技术网

Javascript 为什么有些人在定义React组件时使用state而不是this.state?

Javascript 为什么有些人在定义React组件时使用state而不是this.state?,javascript,reactjs,meteor,mapbox-gl-js,Javascript,Reactjs,Meteor,Mapbox Gl Js,我看到了不同的例子,其中一些人使用state,而另一些人使用this.state。我还是不明白什么时候用什么。在使用Mapbox或Meteor的示例中,我只看到这个.state 例1: 导出默认类SomeComponent扩展组件{ state={someState} render(){ 返回( ); } } 例2: 导出默认类SomeComponent扩展组件{ 建造师(道具){ 超级(道具); this.state={someState} } render(){ 返回( ); } } 当您

我看到了不同的例子,其中一些人使用state,而另一些人使用this.state。我还是不明白什么时候用什么。在使用Mapbox或Meteor的示例中,我只看到这个.state

例1:

导出默认类SomeComponent扩展组件{
state={someState}
render(){
返回(
);
}
}
例2:

导出默认类SomeComponent扩展组件{
建造师(道具){
超级(道具);
this.state={someState}
}
render(){
返回(
);
}
}

当您将类中的变量定义为初始化的对象类属性时,不需要使用此关键字,只需编写
state={someState}
就足够了,但是如果您想在函数或构造函数中定义类变量,您需要使用
this
关键字来指定变量所属的范围

export default class SomeComponent extends Component {
    constructor(props) {
        super(props);
        this.state = { someState }
    }

    render() {
        return (
          <Something-to-render-that-uses-state>
        );
    }
}
导出默认类SomeComponent扩展组件{
建造师(道具){
超级(道具);
this.state={someState}
}
render(){
返回(
);
}
}

状态={}声明是一个类属性,它当前不是JavaScript语言的一部分。某些实用程序(如Babel)会将其编译成合法的JavaScript代码

所以这完全是一样的。看看babel将代码传输到的JavaScript。没有区别

export default class SomeComponent extends Component {
    constructor(props) {
        super(props);
        this.state = { someState }
    }
    render() {
        return (
          <Something-to-render-that-uses-state>
        );
    }
}
export default class SomeComponent extends Component {
    constructor(props) {
        super(props);
        this.state = { someState }
    }

    render() {
        return (
          <Something-to-render-that-uses-state>
        );
    }
}