React State状态

state状态只在class类组件才有,函数组件没有此功能

  • 状态(state)即数据,是组件内部的私有数据,只能在组件内部使用
  • state的值是对象,表示一个组件中可以有多个数据
  • 通过this.state来获取状态
  • state数据值可以修改  this.setState
  • state可以定义在类的构造方法中也可以写在类的成员属性中

export default class extends React.Component {

    constructor(props){

        super(props)

        // 第一种初始化方式

        this.state = {

            count : 0

        }

}

/*

    // 第二种初始化方式

    state = {

        count:1

}

*/

    render(){

        return (

            <div>计数器 :{this.state.count}</div>

        )

    }

}

state中的值不能直接通过修改state中的值来进行修改数据操作,react提供一个this.setState方法来完成state数据的修改操作

import React, { Component } from 'react'

export default class CmpState extends Component {

  // state组件内部使有的数据源

  // 方案1  成员属性
  /* state = {
    username: '张三'
  }
 */
  constructor(props) {
    super(props);
    // 方案2 构造方法初始化state数据
    this.state = {
      // username: '李四'
      username: this.props.username,
      count: 100
    }
  }

  render() {
    return (
      <div>
        得到state中的数据为:{this.state.username}
        <hr />
        <h3>{this.state.count}</h3>
        <button onClick={this.incr.bind(this)}>自增一下</button>
      </div>
    )
  }

  incr() {
    // 更新数据的同时,更新ui显示
    // 方案1 对象写法 不支持并发处理  同步修改
    /* this.setState({
      count: ++this.state.count
    }) */

    // 方案2 异步处理,支持并处理  ssf  官方推荐写法
    /* this.setState((state) => {
      return {
        count: ++state.count
      }
    }) */
    // 简写
    this.setState((state) => ({
      count: ++state.count
    }))



  }

}

props与state区别

  • props 中存储的数据,都是外界传递到组件中的
  • props 中的数据,都是只读的
  • state 中的数据,都是可读可写的
  • props 在函数声明或类申明的组件中都有
  • state 只有类申明的组件中才有
右侧打赏一下 代码改变世界一块二块也是爱
原文地址:https://www.cnblogs.com/ht955/p/14667299.html