Skip to content

Latest commit

 

History

History
39 lines (37 loc) · 1.1 KB

react_setState.md

File metadata and controls

39 lines (37 loc) · 1.1 KB
/**
props:
 new entry: ""
state
 isHot: false
rendered by
 react-dom
类中可以直接写赋值语句
 */

class Weather extends React.Component{
 constructor(props) {
  // 构造器调用1次
  suepr(props)
  this.state = { isHot: false }
  // 解决changeWeather中this指向问题
  this.changeWeather = this.changeWeather.bind(this)
 }
 render() {
  // render调用1+n次,1次初始化n次状态更新的次数
  const {isHot} = this.state
  return <h1 onClick={this.changeWeather}>今天天气很{isHot?'炎热':'凉爽'}</h1>
 }
 // 以上 const w1 = new Weather()
 changeWeather() {
  // 点几次调用几次
  // changeWeather放在哪里?Weather的原型对象上,供实例使用
  // 由于changeWeather是作为onClick的回调,所以不是通过实例调用的,是直接调用
  // 类中的方法默认开启了局部的严格模式,所以changeWeather中的this为undefined
  // 获取原来的isHot值
  const isHot = this.state.isHot
  this.setState({isHot: !isHot})
  // 严格注意:状态(state)不可直接更改,下面这行就是直接更改
  // this.state.isHot = !isHot
 }
}