• react组件三大核心之一state


    -

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>组件实例核心属性1:state</title>
    </head>
    <body>
      <!-- 准备一个容器 -->
      <div id="test"></div>
      <!-- 引入react核心库 -->
      <script src="https://cdn.bootcdn.net/ajax/libs/react/18.2.0/umd/react.development.min.js"></script>
      <!-- 引入react-dom, 用于支持react操作dom, 需要在核心库之后引入 -->
      <script src="https://cdn.bootcdn.net/ajax/libs/react-dom/18.2.0/umd/react-dom.development.min.js"></script>
      <!-- 引入babel.js,用于将jsx转化为js -->
      <script src="https://cdn.bootcdn.net/ajax/libs/babel-standalone/7.18.7/babel.min.js"></script>
    
      <script type="text/babel">
        // 1.创建类组件
        class Weather extends React.Component {
          // 构造器调用几次?----1次
          constructor(props) {
            console.log('constructor');
            super(props);
            // 初始化状态
            this.state = { isHot: true };
            // 解决changeWeather的this指向问题
            this.changeWeather = this.changeWeather.bind(this);
          }
          // render调用几次?----1+n次,初始化调用一次,每次状态更新调用一次
          render() {
            console.log('render');
            return <h1 id="title" onClick={this.changeWeather}>今天天气很{this.state.isHot ? '炎热' : '凉爽'}</h1>
          }
          changeWeather() {
            // changeWeather放在哪里?---Weather的原型对象上,供实例调用
            // 由于changeWeather是作为onClick的回调,所以不是通过实例调用的,是直接调用
            // 类中的方法默认开启了局部的严格模式,所以changeWeather中的this为undefined
            // 严重注意,状态state不可直接更改,
            // this.state.isHot = !this.state.isHot; 这是错误的写法
            // 严重注意,state必须通过setState修改,且更新是合并,不是替换(不是把整个state对象替换了)
            const { isHot } = this.state;
            this.setState({ isHot: !isHot })
          }
        }
        // 2.渲染组件到页面
        ReactDOM.render(<Weather />, document.getElementById('test'))
      </script>
    </body>
    </html>

    -

  • 相关阅读:
    CSS 实现图片灰度效果
    有关楼层滚动且对应楼层Nav导航高亮显示
    本地上传图片预览效果
    gulp.js 的安装以及使用
    ReactJS -- 初学入门
    ie8下jquery改变PNG的opacity出现黑边
    数据库操作 (4-3)
    Python之协程 (4-2)
    python 之 线程 3-29
    Python之 并发编程(3-19)
  • 原文地址:https://www.cnblogs.com/fqh123/p/16610459.html
Copyright © 2020-2023  润新知