Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.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中的setState实现_Reactjs - Fatal编程技术网

Reactjs中的setState实现

Reactjs中的setState实现,reactjs,Reactjs,我在查看ReactJS教程时,在以下几点上感到困惑: 当我们想要根据以前的状态更新当前状态时,我们应该调用setState的一个变量,它接受一个函数 this.setState(function(prevState, props) { return { counter: prevState.counter + props.increment }; }); 现在我的问题是,现在谁将以以前的状态调用此函数?就像我们用值直接调用setState一样,我们知道我们已经触发了工作流,将状

我在查看ReactJS教程时,在以下几点上感到困惑: 当我们想要根据以前的状态更新当前状态时,我们应该调用setState的一个变量,它接受一个函数

this.setState(function(prevState, props) {
  return {
    counter: prevState.counter + props.increment
  };
});

现在我的问题是,现在谁将以以前的状态调用此函数?就像我们用值直接调用setState一样,我们知道我们已经触发了工作流,将状态设置为value。但是,在这种情况下,谁将调用此方法以及它如何知道要传递的参数,因为这是一个动态方法?

setState
函数将调用该函数

例如(实际设置状态函数并不只是为了显示概念)


setState
函数将调用该函数

例如(实际设置状态函数并不只是为了显示概念)


setState的当前签名

  • setState({state\u name:value})
  • 设置状态(下一个状态,回调)
  • 设置状态(回调)
  • 使用
    setState

  • 无法保证
    此.state
    会立即更新,因此 调用此方法后访问
    this.state
    ,可能会返回旧的 因为React可以将多个
    setState()
    调用批处理到一个更新中以提高性能
  • 例如,下面一个是错误的,因为不能保证
    这个.state.counter
    是更新的。

    assuming count=1 initially.
    
    this.setState({
      counter: this.state.counter + 1
    });
    
    this.setState({
      counter: this.state.counter + 1
    });
    
    计数器=1,而不是3

    可以安全地假设
    setState
    是异步的。

    要修复它,请使用接受函数(回调)而不是对象的另一种形式的
    setState()

    当一个函数被提供给
    setState
    时,React将在中的某个点被调用 未来(不同步)。它将被称为最新的 组件参数(
    state、props、context

    使用第三签名

    assuming count=1 initially.
    
        this.setState((state)=>({counter: state.counter + 1}))
        this.setState((state)=>({counter: state.counter + 1}))
    
    counter = 3
    

    setState的当前签名

  • setState({state\u name:value})
  • 设置状态(下一个状态,回调)
  • 设置状态(回调)
  • 使用
    setState

  • 无法保证
    此.state
    会立即更新,因此 调用此方法后访问
    this.state
    ,可能会返回旧的 因为React可以将多个
    setState()
    调用批处理到一个更新中以提高性能
  • 例如,下面一个是错误的,因为不能保证
    这个.state.counter
    是更新的。

    assuming count=1 initially.
    
    this.setState({
      counter: this.state.counter + 1
    });
    
    this.setState({
      counter: this.state.counter + 1
    });
    
    计数器=1,而不是3

    可以安全地假设
    setState
    是异步的。

    要修复它,请使用接受函数(回调)而不是对象的另一种形式的
    setState()

    当一个函数被提供给
    setState
    时,React将在中的某个点被调用 未来(不同步)。它将被称为最新的 组件参数(
    state、props、context

    使用第三签名

    assuming count=1 initially.
    
        this.setState((state)=>({counter: state.counter + 1}))
        this.setState((state)=>({counter: state.counter + 1}))
    
    counter = 3
    

    setState接受对象和函数作为参数。您可以使用
    this.setState(()=>{myState:'newState'})
    并且仍然与
    this.setState({myState:'newState'})相同。
    setState接受对象和函数作为参数。您可以使用
    this.setState(()=>{myState:'newState'})
    并且仍然与
    this.setState({myState:'newState'})相同
    Ok,但是在这里,param可以是具有不同类型输入的函数,对吗?或者它是固定的输入参数,它可以接收?那么,基本上setState是如何知道要传递哪些输入参数的呢?传递的函数将使用prevState对象调用。但是在本教程中,他们定义了一个函数,该函数同时接受prevState和Props?以及prevState和Props。正确。好的,但在这里,param可以是一个具有不同类型输入的函数,对吗?或者它是固定的输入参数,它可以接收?那么,基本上setState是如何知道要传递哪些输入参数的呢?传递的函数将使用prevState对象调用。但是在本教程中,他们定义了一个函数,该函数同时接受prevState和Props?以及prevState和Props。对的