如何调用具有先前状态的setState以及redux连接受控组件中的附加值?

mde*_*eus 8 reactjs react-redux

如何调用具有先前状态的setState加上受控组件中的附加值?

典型的例子是:

Increment() {
    this.setState((prevState, props) => ({counter: prevState.counter = props.step})
}
Run Code Online (Sandbox Code Playgroud)

但是,如何根据prevState和处理程序中的值更新状态.例如(我知道这个例子是错误的,因为你不能将值传递给setState回调):

HandleOnAddItem(evt, { value }) {
    this.setState((prevState, props, value) -> ({items: value, ...prevState.items})
}
Run Code Online (Sandbox Code Playgroud)

May*_*kla 9

如果要在事件处理函数中传递该值,则它将在setState内部可用,而无需传递给更新程序函数。

像这样写:

HandleOnAddItem(evt, { value }) {
    this.setState((prevState, props) => ({items: value, ...prevState.items}))
}
Run Code Online (Sandbox Code Playgroud)

如果您仅更新一个不依赖于先前状态的状态属性(如我所见),则可以直接编写:

HandleOnAddItem(evt, { value }) {
    this.setState({ items: value })
}
Run Code Online (Sandbox Code Playgroud)

检查此答案以获取更多详细信息:JavaScript闭包如何工作?

例:

HandleOnAddItem(evt, { value }) {
    this.setState((prevState, props) => ({items: value, ...prevState.items}))
}
Run Code Online (Sandbox Code Playgroud)