const或let in React组件

时间:2016-11-27 01:47:13

标签: reactjs ecmascript-6

说我有一个React组件 - 哑或不 - 我想从商店中获取一些内容并将其放入变量中以使我的代码更简洁。我应该使用const还是让?显然,国家将会改变。

以下是我所谈论的一个例子。同样,我想强调,当用户与我的应用程序交互时,myValues会发生变化。

class MyComponent extends Component {

    render() {

        // Here, should I use const or let?
        const myValues = this.props.someData;

        return(
            <div>

            {myValues.map(item => (
                    <SomeOtherComponent key={item.id} data={item} />
                ))}

            </div>
        );
    };
}

function mapStateToProps(state) {
    return {
        someData: state.someValuesComingFromApi
    }
}

export default connect(mapStateToProps)(MyComponent)

4 个答案:

答案 0 :(得分:30)

http://regexr.com/3eoib表示变量不会被重新分配

const表示可以重新分配变量

需要思考的其他事项:

  • 默认使用const
  • 仅在需要重新绑定时使用let
  • const并不表示某个值是“常量”或不可变的。

    const foo = {};
    foo.bar = 10;
    console.log(foo.bar); // --> 10
    

    只有绑定是不可变的。即在const变量上使用赋值运算符或一元或后缀 - 或++运算符会引发TypeError异常

  • ES6 constlet也是let。尽管标识符在编译时具有相同的内存引用,但在代码中声明之前无法访问它们。 (但不是因为我们认为声明将被物理地移动到范围的顶部);)

答案 1 :(得分:18)

const vs let主要与代码块中的“更改”有关。它只在这样的情况下才重要:

const myValues = this.props.someData;
if (*some condition*) {
  myValues = [];
}

在这种情况下,您需要使用let,因为您要更改分配给变量myValues的值:

let myValues = this.props.someData;
if (*some condition*) {
  myValues = [];
}

如果props.someData正在改变,它将触发重新渲染组件。因此,const vs let不会发挥作用。重新运行整个render方法。

所以说,我在你描述的情况下使用const。除非您直接操纵变量的有价值,否则请使用const

答案 2 :(得分:3)

让我参考ESLint规则prefer-const,它对此事有很好的解释。

我唯一能补充的是:

如果您不确定

,则希望使用const 启动所有变量

即使您稍后改变它,调试器也会通知您

答案 3 :(得分:0)

  • 常量

    是contant的缩写,表示变量的值不会改变。

  • 相反,意味着变量的值将改变

  • var

    在两者之间只是中立的。