react学习笔记--state以及setState

在react中通过state以及setState() 来控制组件的状态。

state

state 是 react 中用来存储组件数据状态的,可以类比成 vue 中的 data。

setState()

与 vue 中不同的是 state 不能直接被修改,需要通过 setState() 的方法去修改。

  1. setState() 更新组件状态之后不会立即生效,react 为提高性能会按批次更新 state 然后 render, 即异步操作,所以setSate() 之后立即去取state的值并不是更新之后的状态。
  2. setState() 第一个参数接受两种类型的参数,Object以及Function
    1. Object
      this.setState({
          msg: '更新state msg'
      })
      
      当参数是Object的时候, 可以即为对应 state 中的 key, value 即是新的值。
    2. Function
      当参数是函数的时候,setState()会将上一个setState()的结果作为参数传入这个函数
      ...
      constructor () {
          this.state = { counter: 0 }
      }
      add() {
          this.setState({ counter: this.state.counter + 1 })
          this.setState({ counter: this.state.counter + 1 }) // 此时`this.state.counter`的值还是初始值0,,所以这个操作是无效的
          this.setState(prevState => { counter: prevState.counter + 1 }) // `prevState.counter` 为上次更新之后的值,即是1
      }
      ...
      
  3. setState() 第二个参数是一个回调函数,表示 state 更新完成
    this.setState({
        msg: '更新state msg'
    }, () => {
        console.log('state 更新完毕')
    })
    
    根据这个可以使用Promise以及async/await,封装成同步操作
    setStateAsync(state) {
        return new Promise(resolve => {
            this.setState(state, resolve)
        })
    }
    // 使用
    async add() {
        await setStateAsync({ counter: this.state.counter + 1 })
        console.log('state 更新完毕')
    }
    

感谢您的阅读,本文由 赵的拇指 版权所有。原文地址: https://www.zhaofinger.com/detail/11

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本笔记基于React官方文档,当前React版本号为15.4.0。 1. 安装 1.1 尝试 开始之前可以先去co...
    Awey阅读 12,305评论 14 128
  • Learn from React 官方文档 一、Rendering Elements 1. Rendering a...
    恰皮阅读 7,501评论 2 3
  • 最近看了一本关于学习方法论的书,强调了记笔记和坚持的重要性。这几天也刚好在学习React,所以我打算每天坚持一篇R...
    gaoer1938阅读 5,656评论 0 5
  • 以下内容是我在学习和研究React时,对React的特性、重点和注意事项的提取、精练和总结,可以做为React特性...
    科研者阅读 12,565评论 2 21
  • React Element 基本用法 表示DOM标签的React元素 => const element = ;。...
    前端xiyoki阅读 2,425评论 0 0