# 11.组件中的 state 和 setState()

# 1.state的基本使用

  • 状态 (state) 即数据, 是组件内部的私有数据, 只能在组件内部使用
  • state的值是对象, 表示一个组件中可以有多个数据
  • 获取状态: this.state
class Hello extends React.Component {
  constructor() {
    super()
    // 初始化state
    this.state = {
      count: 0
    }
  }
  render() {
    return (
    	<div>有状态组件: {this.state.count}</div>
    )
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Hello extends React.Component {
  constructor() {
	// 简化语法 ⭐⭐
    state = {
      count: 0
    }
    }
  }
  render() {
    return (
    	<div>有状态组件: {this.state.count}</div>
    )
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 2.setState()修改状态

  • 状态搜索可变的
  • 语法: this.setState({要修改的数据})
  • 注意: 不要直接修改state中的值, 这是错误的!!!
  • setState()作用: 1.修改state 2.更新UI
  • 思想: 数据驱动视图
// 正确
this.setState({
  count: this.state.count + 1
})

// 错误
this.state.count += 1
1
2
3
4
5
6
7

# 3.从 JSX 中抽离事件处理程序

  • JSX 中掺杂过多 JS 逻辑代码, 会显得非常混乱
  • 推荐: 将逻辑抽离到单独的方法中, 保证 JSX 结构清晰
xcooo
  • 原因: 事件处理程序中 this 的值为 undefined
  • 希望: this指向组件实例 (render()方法中的this即为组件实例)
上次更新: 2020/10/27 下午11:58:10