美文网首页
setState的一些注意事项

setState的一些注意事项

作者: DancingBUG | 来源:发表于2018-12-13 17:41 被阅读0次
  1. 尽量不要直接修改state中的数据,如:

     this.state.list.splice(xxx)
     this.setState({
       list:this.state.list  
     })
    

    这样做确实可以生效,但应该遵循immutable的原则而尽量避免直接修改state中的数据,所以改为:

    const list = [...this.state.list]
    list.splice(xxx)
    this.setState({
       list
    })
    
  2. this.setState可以返回一个函数,也推荐大家尽量使用函数式setstate,如:

    handleInputChange(e){
      const value = e.target.value
      this.setState(()=>({
        inputValue: value
      }))
    }
    

    这里注意,我们不能直接inputValue:e.target.value,而要先做一份拷贝,再使用,否则会由于
    异步的问题报错。

    tips: 函数体用()括住,表示函数体是一个直接return的对象,等同于:

    this.setState(()=>{
      return {
        inputValue: value
      }
    })
    

    此外,函数式setState的函数还可以接受两个参数

    this.setState((prevState, props) => ({
      counter: prevState.counter + props.increment 
     }))
    

    第一个参数是原始state,等同于this.state,第二个参数是父组件传递的属性。

    再此外,setState本身还可以接收第二个参数,解决由于setState是异步的,有些事件我们需
    要等setState更新完才触发,所以第二个参数是一个回调函数,如:

    this.setState(()=>{
      return {
        inputValue: value
      }
    }, ()=>{
      console.log("this is a callback")
    })
    

    而且,回调函数会在componentDidUpdate之后执行。

  3. React父子组件通信遵循单向数据流,因此子组件拿到父组件传递的props是只读的,不要尝试去修改它哦。

  4. setState是一个异步方法,可以集中执行多数据的更新,从而减少虚拟DOM比对次数,提升性能。

相关文章

  • setState的一些注意事项

    尽量不要直接修改state中的数据,如: this.state.list.splice(xxx) this.set...

  • react hooks 之 useState

    useState 注意事项 不可局部更新,需要 ... 操作符 setState(obj) 必须是一个新对象,通过...

  • React Hooks 详解

    useState 使用状态 注意事项1: 不可局部更新 如果state是一个对象,能否部分setState?答案是...

  • React Hooks 详解

    一、useState 注意事项1: 不可局部更新state 是一个对象,不能setState部分更新因为setSt...

  • React setState注意事项

    1. 不用直接修改this.state 比如this.state.value=1因为setState通过一个队列机...

  • react拓展

    setState() setState更新状态的2种方式 对象式的setState 函数式的setState 对象...

  • react的setState使用详解

    react修改状态是不能直接修改的,需要使用setState来进行状态的修改,但是setState的使用会存在一些...

  • 对React setState的一些思考与心得

    前言 这篇文章主要是为了纪录一些自己对于setState的认识的不断深入的过程。 第一阶段 初识setState ...

  • setState()状态更新函数

    理解setState的关键 setState不会立刻改变React组件中state的值; setState通过引发...

  • 08react基础-react原理

    setState()更新数据 setState()更新数据是异步的 注意:使用该语法,后面的setState不要依...

网友评论

      本文标题:setState的一些注意事项

      本文链接:https://www.haomeiwen.com/subject/saebhqtx.html