【React】组件实例的三大属性——state

1.正常的state写法(有constructor)

// 1.创建组件
class Weather extends React.Component {
  constructor(props) {
    super(props)
    // 初始化状态
    this.state = {
      isHot: false,
      wind: '微风'
    }
    // 解决changeWeather中this的指向问题
    this.changeWeather = this.changeWeather.bind(this)
  }

  // changeWeather调用几次? ———— 点几次就调用几次
  changeWeather() {
    this.setState({
      isHot: !this.state.isHot
    })
  }

  // render调用几次? ———— 1+n次 1是初始化的那次,n是状态更新的次数
  render() {
    const { isHot, wind } = this.state
    return <h1 onClick={this.changeWeather}>今天天气很{isHot?'炎热':'凉爽'}{wind}</h1>
  }
}
// 2.渲染组件到页面
ReactDOM.render(<Weather />, document.getElementById('test'))

注意:
1. onClick后面绑定的方法不能带括号:
onClick={this.changeWeather}- YES;
onClick={this.changeWeather()}- NO!
2. 自定义方法拿不到this?记得constructor中用bind绑定它的this指向:this.changeWeather = this.changeWeather.bind(this)

2.state的简写方式

三步骤:
1. 不用写constructor
2. state直接写
3. 自定义方法用箭头函数

// 1.创建组件
class Weather extends React.Component {
  // 初始化状态
  state = { isHot: false, wind: '微风' }

  // 自定义方法 ———— 要用赋值语句的形式+箭头函数
  changeWeather = () => {
    this.setState({
      isHot: !this.state.isHot
    })
  }

  render() {
    const { isHot, wind } = this.state
    return <h1 onClick={this.changeWeather}>今天天气很{isHot?'炎热':'凉爽'}{wind}</h1>
  }
}
// 2.渲染组件到页面
ReactDOM.render(<Weather />, document.getElementById('test'))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值