day04--react中state的简化

一、简化state

回顾我们之前的写法:
state是在构造器里面定义的。
1)我们为什么要在构造器里面定义?
答:对于创建一个实例对象时,我们对要传进来的数据进行接收,那么我们必须要写一个构造器来接收传进来的数据,但是如果我们要定义的数据是固定的,那么就可以不使用构造器的形式,而是使用赋值语句的方式定义一个属性接收数据。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        class Person {
            constructor(name,age) {
                this.name = name
                this.age = age
                this.school = "211大学"
            }
        }
        let p = new Person("张三",18)
        console.log(p);
    </script>
</body>
</html>

2)如何简化state?
既然我们要传的数据是固定的,那么就不需要构造器,直接使用赋值语句的方式定义属性,那么通过赋值语句定义的属性都会放在实例对象身上。那么我么就可以通过实例对象调用自身的属性,即this.xxx。
而对于下面的switchover 方法来说,必须使用箭头函数的形式,此时的this指向的就是实例对象,否则this为undefined。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>hello_react</title>
</head>

<body>
    <!-- 准备好一个容器 -->
    <div id="test"></div>
    <!-- 引入react核心库 -->
    <script type="text/javascript" src="/react-development.js"></script>
    <!-- 引入react-dom,用于支持react操作DOM -->
    <script type="text/javascript" src="/react-dom-development.js"></script>
    <!-- 引入babel,用于将jsx转为js -->
    <script type="text/javascript" src="/babel.min.js"></script>
    <script type="text/babel">
        // 1.创建组件
        class Weather extends React.Component {
            // 初始化状态
            // 赋值语句是放在对象实例身上的
            state = { isHot: false,wind: "微风" }
            // render调用1+n次
            render() {
                const { isHot,wind } = this.state
                return <h1 onClick={this.switchover}>今天天气很{isHot ? '炎热' : '凉爽'},{wind}</h1>
            }
            // 自定义方法--要用赋值语句的形式+箭头函数
            switchover = ()=> {
                 const isHot = this.state.isHot//此时的this指向的是Weather new出来的这个实例对象
                 this.setState({isHot: !isHot})
            }
        }
        // 2.渲染虚拟DOM到页面
        ReactDOM.render(<Weather />, document.getElementById('test'))
    
    </script>
</body>

</html>

相关推荐

  1. day04--reactstate简化

    2024-04-28 14:52:06       13 阅读
  2. day03--reactsetState使用

    2024-04-28 14:52:06       14 阅读
  3. day04--react批量传递props

    2024-04-28 14:52:06       14 阅读
  4. ReactState管理4 个关键解决方案

    2024-04-28 14:52:06       18 阅读
  5. react点击按钮不能获取最新state时候

    2024-04-28 14:52:06       26 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-28 14:52:06       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-28 14:52:06       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-28 14:52:06       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-28 14:52:06       18 阅读

热门阅读

  1. axios下载接口后端返回了json但前端得到的是blob

    2024-04-28 14:52:06       10 阅读
  2. LeetCode //C - 18. 4Sum

    2024-04-28 14:52:06       11 阅读
  3. 2023-2024年AI+跨境电商行业报告合集(精选47份)

    2024-04-28 14:52:06       11 阅读
  4. Kafka

    2024-04-28 14:52:06       10 阅读
  5. MySQL数据库中Delete语句和Truncate table 语句的区别

    2024-04-28 14:52:06       12 阅读
  6. vue+vue-qr生成带logo的二维码并自动下载

    2024-04-28 14:52:06       11 阅读
  7. JDK安装

    2024-04-28 14:52:06       9 阅读
  8. 【数据库】Oracle数据库学习笔记

    2024-04-28 14:52:06       11 阅读
  9. 人工智能底层自行实现篇3——逻辑回归(上)

    2024-04-28 14:52:06       11 阅读
  10. php视图处理类

    2024-04-28 14:52:06       8 阅读