四、【基础】组件实例三大核心属性之一 state

news2024/9/23 1:18:46

文章目录

  • 1、CODE
  • 2、Result
    • 2.1、初始化
    • 2.2、触发更新
  • 3、state简写

理解:

  1. state是组件对象最重要的属性, 值是对象(可以包含多个key-value的组合)
  2. 组件被称为"状态机", 通过更新组件的state来更新对应的页面显示(重新渲染组件)

注意:

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

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

    1. 强制绑定this: 通过函数对象的bind()
    2. 箭头函数
  3. 状态数据,不能直接修改或更新,必须使用 setState

1、CODE

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

<head>
    <meta charset="UTF-8">
    <title>state</title>
</head>

<body>
    <!-- 准备好一个“容器” -->
    <div id="test"></div>

    <!-- 引入react核心库 -->
    <script type="text/javascript" src="../js/react.development.js"></script>
    <!-- 引入react-dom,用于支持react操作DOM -->
    <script type="text/javascript" src="../js/react-dom.development.js"></script>
    <!-- 引入babel,用于将jsx转为js -->
    <script type="text/javascript" src="../js/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: false,
                    wind: 1
                }
                //解决changeWeather中this指向问题
                this.changeWeather = this.changeWeather.bind(this)
            }

            //render调用几次? ———— 1+n次 1是初始化的那次 n是状态更新的次数
            render() {
                console.log('render');
                //读取状态
                const { isHot, wind } = this.state
                return (
                    <div>
                        <h1>今天天气很{isHot ? '炎热' : '凉爽'},风力{wind}</h1>
                        <button onClick={this.changeWeather}>改变天气</button>
                        <button onClick={() => this.setState({ wind: parseInt(Math.random() * 100 || 1) })}>改变风级</button>
                    </div>
                )
            }

            //changeWeather调用几次? ———— 点几次调几次
            changeWeather() {
                //changeWeather放在哪里? ———— Weather的原型对象上,供实例使用
                //由于changeWeather是作为onClick的回调,所以不是通过实例调用的,是直接调用
                //类中的方法默认开启了局部的严格模式,所以changeWeather中的this为undefined

                console.log('changeWeather');
                //获取原来的isHot值
                const isHot = this.state.isHot
                //严重注意:状态必须通过setState进行更新,且更新是一种合并,而非替换。
                this.setState({ isHot: !isHot })
                console.log(this);
            }
        }
        //2.渲染组件到页面
        ReactDOM.render(<Weather />, document.getElementById('test'))

    </script>
</body>

</html>

2、Result

2.1、初始化

在这里插入图片描述

2.2、触发更新

在这里插入图片描述
在这里插入图片描述

3、state简写

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

    render(){
        const {isHot, wind} = this.state
        return (
            <div>
            	<h1>今天天气很{isHot ? '炎热' : '凉爽'},风力{wind}级</h1>
                <button onClick={this.changeWeather}>改变天气</button>
                <button onClick={() => this.setState({ wind: parseInt(Math.random() * 100 || 1) })}>改变风级</button>
            </div>
        )
    }

    //自定义方法————要用赋值语句的形式+箭头函数
    changeWeather = ()=>{
        const isHot = this.state.isHot
        this.setState({isHot:!isHot})
    }
}
//2.渲染组件到页面
ReactDOM.render(<Weather/>,document.getElementById('test'))


小白学习参考视频:尚硅谷React教程

中文官网:React 官方中文文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/32764.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法导论习题—摊还时间代价分析、栈实现队列、贪心算法近似比、集合覆盖问题

在执行的nnn个操作中&#xff0c;有至多⌈lgn⌉⌈lg n⌉⌈lgn⌉个操作的次序是222的幂&#xff0c;这些操作的次序&#xff08;即代价&#xff09;如下 1,2,4,8,⋅⋅⋅,2⌈lgn⌉1, 2, 4, 8, , 2 ⌈lg n⌉ 1,2,4,8,⋅⋅⋅,2⌈lgn⌉ nnn个操作的总代价为 T∑k0⌈lgn⌉2k(n−⌈…

Android App网络通信中利用okhttp实现下拉刷新和上拉加载实战(抓取文章信息 超详细 附源码)

需要源码和工具类请点赞关注收藏后评论区留言私信~~~ 一、实现下拉刷新和上拉加载功能 网络上的信息很多&#xff0c;往往无法依次拉下来&#xff0c;故而App引入了分页加载功能&#xff0c;最开始先展示第一页内容&#xff0c;等到用户拉到该页底部后再去加载下一页内容&…

网络安全面试、实习、校招经验打包分享

整理收集了近些年的资料 内几乎覆盖了各大公司&#xff0c;大厂小厂都有 很多培训机构都是收费提供 本公众号无任何套路全部免费 提供下载学习 为了防止失效&#xff0c;建议下载收藏起来 以后总会用得上&#xff01; 下面截取部分资料 腾讯-安全技术实习生 时长&am…

流媒体技术基础-摄像头接口与标准

一、摄像头接口概括 摄像头按接口分类如下 主板直接接的专用接口 SPI接口&#xff1a;串行传输、速度慢。常用用于MCU DVP接口&#xff1a;并口传输&#xff0c;速度较慢&#xff0c;传输的带宽低。 MIPI接口&#xff1a;手机平台标准接口&#xff0c;差分串口传输&#xff…

CSS3基础

CSS 层叠样式表Cascading Style Sheets&#xff0c;缩写为CSS&#xff0c;是一种样式表语言&#xff0c;用来描述HTML或XML&#xff08;包括如SVG、MathML、XHTML 之类的XML 分支语言&#xff09;文档的呈现。 CSS描述了在屏幕、纸质、音频等其它媒体上的元素应该如何被渲染的问…

AI 预测世界杯比赛结果,惊掉下巴

哈喽&#xff0c;大家好。 今天看到Kaggle上有一个预测世界杯比赛结果的项目&#xff0c;截至目前 4 场比赛预测结果全中。 今天把源码研究了一下&#xff0c;做了中文注释&#xff0c;给大家分享下。 文章目录技术提升1. 获取数据集2. 特征工程3. 建模4. 预测技术提升 本文…

“软硬兼施”,全方位守护企业数据安全

编者按&#xff1a;知识管理涉及大量企业数据&#xff0c;所以其数据安全问题不容忽视。如何做好企业知识管理安全&#xff1f;本文分析了企业数据安全问题主要来自哪里&#xff0c;并从设备、部署、人员管控三方面出发&#xff0c;最终指出了解决方案。 关键词&#xff1a;私…

ORB-SLAM3算法学习—Frame构造—基于SAD滑窗的双目特征匹配

文章目录0总述1双目匹配1.1为左目每个特征点建立带状区域搜索表&#xff0c;限定搜索区域。&#xff08;已提前极线校正&#xff09;1.2对左目相机每个特征点&#xff0c;通过描述子在右目带状搜索区域找到匹配点1.3通过SAD滑窗得到匹配修正量bestincR1.4 做抛物线拟合找谷底得…

力扣刷题(代码回忆录)——回溯算法

关于回溯算法&#xff0c;你该了解这些&#xff01;回溯算法&#xff1a;组合问题回溯算法&#xff1a;组合问题再剪剪枝回溯算法&#xff1a;求组合总和&#xff01;回溯算法&#xff1a;电话号码的字母组合本周小结&#xff01;&#xff08;回溯算法系列一&#xff09;回溯算…

变压器励磁电感以及漏感

1 励磁电感(magnetic inductance):脉冲变压器的初级电感 仅在变压器中才出现的名词,也就是一个等效电感值,事实上这个电感是变压器的初级侧电感,作用在其上的电流不会传导到次级,它的作用是拿来对铁芯产生激磁作用,使铁芯内的铁磁分子可以用来导磁,就好比铁芯是磁中性,绕上…

SuperMap iManager for K8S使用XFS文件系统类型出现节点异常解决办法

前段时间&#xff0c;遇到了多个用户在使用iManager for K8S的过程出现K8S节点宕机&#xff0c;或者是使用无法使用任何命令的情况。通过了解之后发现这些客户都存在一个共同点&#xff0c;服务节点的文件系统类型都是XFS&#xff0c;并且使用的NFS作为存储。本篇文章将讲解如何…

窗口函数简介与总结

目录 什么是窗口函数 窗口函数的实现原理 窗口函数使用场景 常用的窗口函数有&#xff1a; 1. 窗口排序函数&#xff1a;ROW_NUMBER()、RANK()、DENSE_RANK()&#xff1b; 2. 窗口聚合函数&#xff1a;SUM()、MIN()、MAX()、AVG()&#xff1b; 3. LAG() 4. LEAD() 5. …

88.Django中间件的说明与使用方法

1. 概述 ​ AOP&#xff08;Aspect Oriented Programming &#xff09;&#xff0c;面向切面编程&#xff0c;是对业务逻辑的各个部分进行隔离&#xff0c;从而使得业务逻辑各部分之间的耦合度降低&#xff0c;提高程序的可重用性&#xff0c;同时提高了开发的效率。可以实现在…

css-实现卡牌的发牌和翻牌动画

场景描述&#xff1a; 打开抽卡界面&#xff0c;卡牌出现并发牌至固定的位置&#xff0c;此时展示的是卡牌的背面&#xff1b;用户点击卡牌时&#xff0c;卡牌进行翻转&#xff0c;并展示卡牌内容&#xff0c;或者发牌后自动进行翻转和展示。 本实例在页面挂载后自动播放动画&…

前端网站动态主题色解决方案

动态主题色替换分两种&#xff1a;UI 组件库主题色替换和系统主题色替换。 组件库 UI 动态主题替换现阶段只在 Element-UI 和 Vant-UI 测试过&#xff0c;根据排查这种方案应该适用于所有类似的动态主题色替换场景。 1. UI 组件库主题色替换 在进入到这一部分之前&#xff0c;…

力扣232 - 用栈实现队列【C语言实现】

用栈实现队列~一、题目描述二、思路分析三、代码详解1、结构声明与展开剖析2、入队【入栈思想】3、获取队头【出栈思想】4、出队【复用思想】5、逐步算法图解四、整体代码展示&#x1f4bb;C语言代码实现五、总结与提炼一、题目描述 示例 1&#xff1a; 输入&#xff1a; [“My…

Java基础知识+必考面试题(分享收藏版)

在学习Java语言之前&#xff0c;我们要了解相关知识体系&#xff0c;才能更好的掌握学习。那么下面我们就一起来学习JAVA语言吧~ Java语言概述 Java语言是Sun公司在1995年推出的高级编程语言&#xff0c;编程语言就是计算机语言&#xff0c;人们可以通过使用编程语言让计算机完…

Webfunny 创始人:Skywalking × Zabbix 与观纵探索可观测性

作为 Webfunny 的 PMC&#xff0c;应伟长期致力于前端监控、埋点探针的产品研发&#xff0c;伴随着全链路监控的探索&#xff0c;在整合 Skywalking 与 Zabbix 打造一体化监控平台的实践中&#xff0c;是怎样的心路历程&#xff1f; “ 从前端监控到全链路监控的挑战 Webfun…

Mockplus Cloud updated传达设计意图的新方法

Mockplus Cloud updated传达设计意图的新方法 增加了Mockplus Cloud UI 2.0&#xff0c;使UI更加直观和简洁。 引入了注解&#xff0c;为向开发人员传达设计意图提供了一种新的方式。 添加了上传图像以进一步解释任务注释的功能。 优化任务创建以改善用户体验。 提高了下载、导…

BUUCTF·鸡藕椒盐味·WP

来源&#xff1a;https://buuoj.cn/challenges#%E9%B8%A1%E8%97%95%E6%A4%92%E7%9B%90%E5%91%B3 分析 鸡藕椒盐味奇偶校验位 ~验证码如下&#xff1a;1100 1010 0000 ,而且打印的时候倒了一下。把答案哈希一下就可以提交了~ 验证码是二进制数&#xff0c;但是题目也提示了这…