day03--react中对state的理解

一、react中的state

1.state是组件对象最重要的属性,值是对象(可以包含多个key-value的组合)

2.组件被称为"状态机",通过更新组件的state来更新对应的页面显示(重新渲染组件)
注意:

(1)组件中的render方法中的this为组件实例对象

(2)组件自定义的方法中this为undefined,如何解决?

a.强制绑定this:通过函数对象的bind()

b.箭头函数

(3) 状态数据,不能直接修改或更新。

函数式组件:this为undefined

html 复制代码
<!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.创建函数式组件
        function Demo() {
            console.log(this);//undefined
            return <h2>我是用函数定义的组件</h2>
        }
        // 2.渲染组件到页面
        ReactDOM.render(<Demo />, document.getElementById('test'))
        /**
         * 执行了ReactDOM.render(<MyComponent/>.....)之后,发生了什么?
         * 1.React解析组件标签,找到MyComponent组件。
         * 2.发现组件是使用函数定义的,随后调用该函数,将返回的虚拟DOM转为真实DOM,随后呈现在页面中。
         * 
         */
    </script>
</body>

</html>

类式组件

html 复制代码
<!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 MyComponent extends React.Component {
            render() {
                console.log(this);
                // render是放在哪里的?MyComponent的原型对象上,供实例使用。
                // render()中的this指向的是MyComponent组件实例对象
                return <h2>我是用函数定义的组件</h2>
            }
        }
        // 2.渲染组件到页面
        ReactDOM.render(<MyComponent/>,document.getElementById('test'))
        /**
         * 执行了ReactDOM.render(<MyComponent/>.....)之后,发生了什么?
         * 1.React解析组件标签,找到MyComponent组件。
         * 2.发现组件是使用类定义的,随后new出来该类的实例,并通过该实例调用原型链上的render方法
         * 3.将render返回的虚拟DOM转为真实DOM,随后呈现在页面中。
         */
    </script>
</body>

</html>

类式组件的this

相关推荐
程序员Sunday21 分钟前
说点不一样的。GPT-5.3 与 Claude Opus 4.6 同时炸场,前端变天了?
前端·gpt·状态模式
yq19820430115627 分钟前
静思书屋:基于Java Web技术栈构建高性能图书信息平台实践
java·开发语言·前端
一个public的class28 分钟前
你在浏览器输入一个网址,到底发生了什么?
java·开发语言·javascript
aPurpleBerry31 分钟前
monorepo (Monolithic Repository) pnpm rush
前端
青茶36037 分钟前
php怎么实现订单接口状态轮询请求
前端·javascript·php
火车叼位1 小时前
脚本伪装:让 Python 与 Node.js 像原生 Shell 命令一样运行
运维·javascript·python
VT.馒头1 小时前
【力扣】2727. 判断对象是否为空
javascript·数据结构·算法·leetcode·职场和发展
鹏北海1 小时前
micro-app 微前端项目部署指南
前端·nginx·微服务
发现一只大呆瓜1 小时前
虚拟列表:从定高到动态高度的 Vue 3 & React 满分实现
前端·vue.js·react.js
css趣多多1 小时前
add组件增删改的表单处理
java·服务器·前端