反应功能setState

时间:2018-05-05 18:49:08

标签: reactjs functional-programming state

嗨,大家好我试着做反应中的功能性setState,但我似乎无法实现它现在我有一个应该设置this.state.siocId状态的hanlder

handleChange(e) {
    const {value} = e.target;
    this.setState(state => ({
        siocId: {...state.siocId, siocId: value}
    }));
}

但这是设置this.state.siocId.siocId = value,我可以做this.state.siocId = value吗?我试过这一行没有成功siocId: {...state, siocId: value}

3 个答案:

答案 0 :(得分:1)

如果您想在功能上设置状态,请使用此模式

handleChange(e) {
   const {value} = e.target;
   this.setState(function(prevState, props){
      return {siocId: value}
   });
}

另请参阅这些文章functional-setstateFunction in setstae了解更多信息

但是,当状态值取决于先前的状态时,你应该使用功能设置。这是因为setstate调用不会立即运行

如果你的状态不依赖于以前的状态,请使用以下模式

handleChange(e) {
    const {value} = e.target;
    this.setState({
        siocId: value
    });
}

答案 1 :(得分:0)

您不需要使用functional setState来实现您想要的功能,您只需编写

即可
handleChange(e) {
    const {value} = e.target;
    this.setState({
        siocId: value
    });
}

这会给你this.state.siocId = value

答案 2 :(得分:0)

你过度复杂了 -

handleChange(e) {
    const {value} = e.target;
    this.setState({
        siocId: value
    });
}