使用react,如何创建一个函数来设置将状态名称和值作为参数的状态?

时间:2017-11-06 04:35:54

标签: reactjs ecmascript-6

我有一个简单的应用程序,将跟踪许多不同的状态。

我意识到我可以创建类似......的功能。

   changeSomething = (nameOfState) => {
     this.setState({nameOfState});
   }

我将为this.state.nameOfState提供可重用的功能。在这种情况下,我需要为许多状态设置可重用的功能。这是最初的b / c,我只有3个州,所以我不在乎。现在我将有大约10个setstate函数,所以复制和粘贴10次是没有意义的。我应该能够创建一个可重用的函数,它将状态名称和值作为参数并设置它们。

3 个答案:

答案 0 :(得分:1)

您可以使用方括号dynamically create prop name

 changeSomething = (nameOfState, value) => {
     this.setState({[nameOfState]: value});
   }

然后在将函数绑定到事件时定义您的道具名称。例如:

<SomeComponent onChange={this.changeSomething.bind(null, 'propName')} />

这是JSFiddle的例子:https://jsfiddle.net/g64jx6dn/1/

答案 1 :(得分:1)

您可以这样做:

changeSomething = (stateName, value) => {
     this.setState({[stateName]: value});
}

答案 2 :(得分:1)

将param作为对象发送,状态名称作为值的键。

例如:

changeSomething({ yourStateName: yourValue }) // function called with parameters as object
changeSomething = (stateValue) => {
    this.setState ({ stateValue });
}