Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 这里的currentState是什么意思_Reactjs_React Native - Fatal编程技术网

Reactjs 这里的currentState是什么意思

Reactjs 这里的currentState是什么意思,reactjs,react-native,Reactjs,React Native,这里只有一个状态,IsOne,但是当我设置一个状态时,我看到了currentState,这意味着什么?在上面的示例中,currentState是您以前使用过的状态,当您有多个项目(如多个用户列表)时,您希望比较,并希望将其中一些项目与true false进行比较,然后您可以使用,但对于切换状态,您只需使用以下代码即可: this.state = { isOpen: false }; onClickHandler() { this.setState(currentState =

这里只有一个状态,IsOne,但是当我设置一个状态时,我看到了currentState,这意味着什么?在上面的示例中,currentState是您以前使用过的状态,当您有多个项目(如多个用户列表)时,您希望比较,并希望将其中一些项目与true false进行比较,然后您可以使用,但对于切换状态,您只需使用以下代码即可:

this.state = { isOpen: false };


onClickHandler() {
        this.setState(currentState => ({
          isOpen: !currentState.isOpen
        }));
      }

要使用当前状态计算新状态,您可以执行以下操作:

this.state = { isOpen: false };


onClickHandler() {
        this.setState({
          isOpen: !this.state.isOpen
        });
      }
但是,这是一种不良做法,如以下所述:

状态更新可能是异步的。React可批处理多个setState() 调用单个更新以提高性能。因为这是道具和 此.state可能会异步更新,您不应依赖其 用于计算下一个状态的值

因此,当我们需要从当前状态计算下一个状态时,
setState
setState(myCurrentState=>{…})的形式提供对当前状态的访问。您甚至可以访问
props
作为第二个参数,如
setState((myCurrentState,myProps)=>{…})

因此,在您的情况下,
currentState
只是指在即将发生的状态更新之前给定时刻的组件状态

这意味着什么

如果你去那里的文档,你会发现有两种方法可以更新状态

  • 通过使用对象方式
  • 通过传递函数 1. 这样,您只需要传递要更新的状态对象的属性。比如:

    this.state = { isOpen: false };
    
    
    onClickHandler() {
            this.setState(currentState => ({
              isOpen: !this.state.isOpen
            }));
          }
    
    2. 在本例中,您将其命名为
    currentState
    ,它指的是尚未更新的前一个状态

    this.setState({isOpen: !this.state.isOpen});  
    

    this.setState(currentState=>({//currentState在这里是什么意思以前存储的状态如果我不使用currentState怎么办…?您可能不需要它。
    setState({isOpen:!currentState.isOpen})
    如果没有currentState,它也能工作。这不是问题的答案。这就是我在评论中写这篇文章的原因。亲爱的,currentState的意思是什么?包括这个答案希望你能理解
    this.setState(currentState => ({ // <---currentState is named as prevState in docs
          isOpen: !currentState.isOpen
    }));