javascript在React setState中使用

时间:2017-11-03 09:24:10

标签: javascript

我正在学习一本React书,但看到这样的简单,但我不知道为什么有一个','在[item]:value]

之后
handleChange(item ,e) {
    const {value} = e.target;
    this.setState({[item]:value,});
}

render() {
    const {name, age} = this.state;
    return (
        <div className="FormA">
            name: <input value={name} onChange={this.handleChange.bind(this,'name')}/>
            age: <input value={age} onChange={this.handleChange.bind(this,'age')}/>
        </div>
    );
}

3 个答案:

答案 0 :(得分:2)

最佳做法是拥有&#39;&#39;在每个对象属性之后。您必须使用过ESLint:https://eslint.org/docs/rules/comma-style

这只是语法问题,不会在代码中添加任何内容。

答案 1 :(得分:1)

这是一种最佳做法,因为以下原因

  1. 更容易跟踪逗号。例如。如果你想要一个很长的对象属性列表,并且你想要注释掉它们中的一些,那么你不必担心昏迷,因为它们也被评论过。复制粘贴也是如此。
  2. 在版本控制中更容易看到差异。
  3. 逗号可以在结尾或前面。 [我通常在前面使用,个人选择。]

    从ESList规则引用

      

    逗号样式规则强制执行逗号分隔列表的样式。 JavaScript中主要使用两种逗号样式:

         

    标准样式,其中逗号放在当前行的末尾

         

    逗号第一种风格,其中逗号放在下一行的开头

         

    使用逗号优先风格的理由之一是它可以帮助跟踪缺失和尾随逗号。这些都是有问题的,因为变量声明中缺少逗号会导致全局变量泄漏,而尾随逗号可能会导致旧版IE中的错误。

    参考:

    https://eslint.org/docs/rules/comma-dangle

    https://medium.com/@nikgraf/why-you-should-enforce-dangling-commas-for-multiline-statements-d034c98e36f8

    https://eslint.org/docs/rules/comma-style

答案 2 :(得分:0)

这是因为您可以定义要设置的命名值的集合。如果您只设置一个,则不需要使用它。同样,最后一个元素也不需要它,例如:

this.setState({[item]:value}); //You don't necessary need the ',' here.

this.setState({
[item]:value,     //here you need to use ','
[item2]:value2,   //here you need to use ','
[item3]:value3}); //here you don't need to use ','

有关对象的更多信息,请检查this linkthis one