大前端-React08:组件实例三大属性之state(实例数据表示组件状态)&&点击页面文字发生变化。

22 篇文章 0 订阅
15 篇文章 0 订阅

01-代码

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>07_component_state</title>
</head>
<body>

<div id="example"></div>

<script type="text/javascript" src="../js/react.development.js"></script>
<script type="text/javascript" src="../js/react-dom.development.js"></script>
<script type="text/javascript" src="../js/babel.min.js"></script>

<script type="text/babel">
  /*
  需求: 自定义组件, 功能说明如下
    1. 显示h2标题, 初始文本为: 你喜欢我
    2. 点击标题更新为: 我喜欢你
  */
  class Like extends React.Component {
    constructor (props) {
      super(props)
      // 初始化状态
      this.state = {
        isLikeMe: true
      }
      // 绑定this为组件对象
      this.change = this.change.bind(this)
    }
    change () {
      // 更新状态: this.setState()
      // this.state.isLikeMe = !this.state.isLikeMe // 不能更新更新某个状态
      this.setState({
        isLikeMe: !this.state.isLikeMe
      })
    }
    render () {
      console.log('render()')
      const text = this.state.isLikeMe ? '你喜欢我' : '我喜欢你'
      return <h2 onClick={this.change}>{text}</h2>
    }
  }
  ReactDOM.render(<Like />, document.getElementById('example'))
</script>
</body>
</html>


输出结果:
在这里插入图片描述
点击后:
在这里插入图片描述

02-解释

1,类中的state

(1)state表示一种状态,

一个类用来描述一个组件,那么state就是用来描述这个组件的一个实例的一个变化的量。

我们认为写进去一个变量的状态,
这里面,state内的isLikeMe是一个变量用来承载的来自页面变换。
在这里插入图片描述

(2)this 指向,类实例。

(3)Render()中的数据视图

在这里插入图片描述

(4)点击事件:

点击事件中为什么使用this.setState而不是直接使用this.isLikeMe
如果直接指向的this.isLikeMe,那么就不是实例调用,而是直接调用方法,this为undefined
在这里插入图片描述

(5)绑定:绑定this为组件对象

this.change = this.change.bind(this)本质上是一个赋值语句,赋值产生一个新方法。

在这里插入图片描述
输出:在这里插入图片描述
原型链
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值