【react】对state的理解

2023-11-17

state是类创建的实例对象上的一个状态属性
想要改变类的实例对象的值,就要用到构造器,但由于类组件都是继承的React内置的Component类,继承的类,要写构造器的话,就必须写super

改变state: this.state.xxx = xxx

 class Weather extends React.Component {
   constructor(props) {
     super(props)
     this.state = { isHot: false, wind: '风' }   
     console.log(this)     // this指向组件的实例对象
   }
}

使用state: { this.state.xxx }

class Weather extends React.Component {
  render() {
     console.log(this)  // render里面的this指向组件的实例对象,所以要想读取state,直接this.state
     return <h1 id='title' onClick= { demo }>今天天气很{ this.state.isHot ? '炎热' : '凉爽' }</h1>
   }
 }
}

注意:在jsx片段中使用onClick点击事件

  1. 在标签上使用点击事件的时候,不能像原生那样写 onclick,要写onClick
  2. 标签内绑定点击事件,不能写onClick = “demo()”,这样会被识别为一个字符串
  3. 要用花括号,onClick = { demo() },但是demo后面加()会立即执行demo函数
  4. 正确写法:onClick = { demo }

完整代码:

<!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>state</title>
</head>
<body>
  <div id="test"></div>

  <script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
  <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
  <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>

  <script type="text/babel">
    class Weather extends React.Component {
      // 想要对类里的实例对象的值进行操作,就要用到构造器
      constructor(props) {
        super(props)    // 继承的类,写了构造器的话,必须写super
        // 改变state
        this.state = { isHot: false, wind: '风' }   
        console.log(this)     // this指向组件的实例对象
      }
      render() {
        console.log(this)  // render里面的this指向组件的实例对象,所以要想读取state,直接this.state
        return <h1 id='title' onClick= { demo }>今天天气很{ this.state.isHot ? '炎热' : '凉爽' }</h1>
        /* 
          在标签上使用点击事件的时候,不能像原生那样写 onclick,要写onClick
          标签内绑定点击事件,不能写onClick = "demo()",这样会被识别为一个字符串
          要用花括号,onClick = { demo() },但是demo后面加()会立即执行demo函数
          正确写法:onClick = { demo }
        */
      }
    }
    ReactDOM.render(<Weather/>, document.getElementById('test'))

    const title = document.getElementById('title')
    title.addEventListener('click', () => {
      alert('title')
    })

    title.onclick = () => {
      alert('点击title的第二种方式')
    }

    // 以上两种点击事件可以写,但不推荐,因为用了react,就是不想再满屏的出现document获取dom节点

    // 推荐这种  
    function demo() { 
      alert('点击title的第三种方式')
    }
  </script>
</body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【react】对state的理解 的相关文章

  • 如果对象包含在另一个数组中,则从数组中删除该对象

    我试图从数组中删除一个对象 如果该对象的属性 唯一 包含在另一个数组中 我知道我可以像这样执行嵌套 for 循环 for i 0 i lt array length i for j 0 j lt array2 length j if arr
  • 如何更改传单中功能集的样式?

    我正在看等值区域的例子 https leafletjs com examples choropleth https leafletjs com examples choropleth 这是他们使用的数据源 type Feature prop
  • HTML/VBA Click 事件未触发

    这是我第一次在 StackOverflow 上发布问题 到目前为止 我已经能够通过 VBA 帮助论坛解决我的大部分问题 我的问题很简单 我有一个自动数据拉取 我需要在其中导出数据 我过去曾在这方面取得过成功 但这次略有不同 我尝试单击以生成
  • 如何使用 selenium 和 Mocha 获取 xPath() 选择的锚标记的文本

    我已经成功选择了 a 标签 我想显示锚标记的文本 但无法这样做 我正在使用 selenium mocha javascript 和 phantomJS 这是我的脚本 详细 var assert require assert var test
  • VBA / HTML / jQuery 选择自动完成 - 在列表中选择

    我正在尝试使用 Excel 中的 VBA 在网站的列表中选择一个值 这不是一个 正常列表 该网站使用 jQuery 选择自动完成 如下所示 example http davidwalsh name demo jquery chosen ph
  • 非 DOM 对象上的 jQuery 自定义事件

    我最近阅读了一些代码 其功能如下 bob name Bob Smith rank 7 bob bind nameChanged function bob trigger nameChanged 这似乎有效 但我在 jQuery 文档或源代码
  • 如何使用canvas.toDataURL()将画布保存为图像?

    我目前正在构建一个 HTML5 Web 应用程序 Phonegap 本机应用程序 我似乎不知道如何将画布保存为图像canvas toDataURL 有人可以帮我吗 这是代码 有什么问题吗 我的画布被命名为 canvasSignature J
  • 如何使用 jest 模拟第三方库

    我正在开发一个node js应用程序使用nestjs我有一堂课叫LoggerService如下 export class LoggerService private logger Rollbar constructor this logge
  • React Native:加载图像后应用程序性能不佳

    加载图像似乎没有问题 但是加载完毕后就出现问题了 在我的应用程序中 我在整个游戏中一张一张地加载卡片图像 一旦我加载了 40 张卡片图像 整个应用程序就会变得很慢 它总是发生在第 40 个图像处 当我在第 40 个图像之后继续加载更多卡片图
  • javascript中按tab键时如何调用函数?

    我有一个这样的功能 function whenEmpty field if field value field style backgroundColor ffcccc alert Please fill the field field f
  • 未捕获的错误:找不到模块“jquery”

    我在用Electron https github com atom electron制作桌面应用程序 在我的应用程序中 我正在加载一个外部站点 Atom 应用程序之外 可以说http mydummysite index html http
  • 如何在 Angular 中从父组件访问子组件?

    I have mat paginator在子组件a中 如下所示 子组件 html
  • JS用正则表达式替换数字

    我有元素的标识符 如下所示 form book 1 2 3 我想要的是用其他值替换该标识符中的第二个数字 我将函数 match 与以下正则表达式一起使用 var regexp d d d 但它返回我包含的数组 1 2 3 2 因此 当我尝试
  • IE11不监听MSFullscreenChange事件

    我正在尝试使用 Bigscreen js 在 IE11 中使用全屏 但 IE11 不监听 MS FullscreenChange 事件 document addEventListener MSFullscreenChange functio
  • 为什么“tbody”不设置表格的背景颜色?

    我在用 tbody 作为 CSS 选择器来设置background color在一个表中 我这样做是因为我有多个 tbody 表内的部分 它们具有不同的背景颜色 我的问题是 当使用border radius在细胞上 细胞不尊重backgro
  • 查询为空 Node Js Sequelize

    我正在尝试更新 Node js 应用程序中的数据 我和邮递员测试过 我的开发步骤是 从数据库 MySQL 获取ID为10的数据进行更新 gt gt 未处理的拒绝SequelizeDatabaseError 查询为空 我认识到 我使用了错误的
  • JavaScript onresize 事件多次触发

    我在尝试仅在触发 onresize 事件时运行一次函数时遇到一些麻烦 我已经看过这个问题DOM onresize 事件 https stackoverflow com questions 1500312 javascript onresiz
  • Jquery - 通过在字符串中构建 id 的 id 获取元素

    我在使用 jquery 元素时遇到问题 我正在 var 中构造名称 例如 var myId myGotId myId attr title changed myId 返回空 我想通过 id 获取我的元素 但动态构建我的 Id 连接字符串 编
  • 需要有关 React Js 的帮助

    我是 React Js 新手 我的代码无法正常工作 请看下面 这是我的脚本文件Main jsx 该文件由 React 编译 输出放置在 dist 文件夹下的 main js 文件中 var react require react react
  • 如何在 gulp.src 中使用基本正则表达式?

    我正在尝试选择两个文件gulp src highcharts js and highcharts src js 当然 我知道我可以使用数组表达式显式添加这两个表达式 但出于学习目的 我尝试为它们编写一个表达式 我读过可以使用简单的正则表达式

随机推荐

  • Dubbo和Spring Cloud微服务架构对比

    Dubbo和Spring Cloud微服务架构对比 微服务架构是互联网很热门的话题 是互联网技术发展的必然结果 它提倡将单一应用程序划分成一组小的服务 服务之间互相协调 互相配合 为用户提供最终价值 虽然微服务架构没有公认的技术标准和规范或
  • 动态代理模式(实例化详解)

    简介 代理模式通常用于达到对原有系统功能进行扩充的目的 比如 你刚接手一个别人没有完成的项目 这是你不想动别人原理的代码 还需要添加新功能 这时代理模式 这时代理模式 这时代理模式会很好的帮助解决问题 代理模式分为两种 静态代理模式 动态代
  • 蓝桥杯2021年第十二届真题第一场-砝码称重

    题目 题目链接 题解 动态规划 状态定义 dp i j 表示前i个砝码是否能称出重量为j的物品 状态转移 对于第i个砝码 选和不选两种情况 对于选又可以分为放在左边和放在右边 看样例 存在加和减的情况 也就是放在左边和右边的情况 我们规定放
  • 爬虫日常-12306自动购票程序

    文章目录 前言 页面分析 代码设计 前言 hello兄弟们 最近在钻研新鲜知识 一不留神没想起来更新 今天我们顺着前面几篇文章完整的写出一篇12306的自动购票软件 首先把我们已经写完的前期步骤代码再顺一遍 from selenium we
  • IDEA常用快捷键集合(详解)

    keymap中定义的快捷键实在是太多了 全部记住几乎不可能 但在项目开发或调试的工程中 快捷键是绝对的效率工具 查询快捷键 CTRL N 查找类 CTRL SHIFT N 查找文件 CTRL SHIFT ALT N 查 找类中的方法或变量
  • msvcp140.dll缺失重新安装的方法【msvcp140.dll修复工具下载安装】

    如果您在使用某些应用程序或游戏时遇到了 msvcp140 dll丢失 的错误提示 那么您需要采取一些措施来解决这个问题 以下是几种解决msvcp140 dll丢失的方法 msvcp140 dll解决方法一 1 在浏览器顶部网页搜索 dll修
  • 【vue】实现首屏加载等待动画 避免首次加载白屏尴尬

    原文链接 在线体验 width 100 height 443 src jsfiddle net kajweb qrno8s0g 9 embedded html css result allowfullscreen allowfullscre
  • a foreign key constraint fails

    可能由两种原因导致 1 设置的外键和对应的另一个表的主键值不匹配 解决方法 找出不匹配的值修改 或者清空两表数据 2 字符集和排序规则的差异引起 如果确认外键和主键一致 使用如下方式解决 代码前段插入 SET OLD CHARACTER S
  • iOS 15 越狱情报

    关注后回复 进群 拉你进程序员交流群 作者丨小集 来源丨小集 ID zsxjtip iOS 15 正式版本已经发布了 而 iOS 15 1 beta 版本也在近期发布 在普通用户和开发者追更各个 beta 版和正式版时 另一个神秘群体也没有
  • 架构 但服务多租户_华为以AI和混合云实现多租户数据中心架构转型

    华为采用全球直播的方式以 你好 智能世界 为主题举办行业数字化转型大会 把原计划在巴塞罗那现场举办的活动时间不变 2月24日 27日 搬到线上 针对互联网服务行业数字化 专门举办的MTDC 多租户数据中心论坛 于北京时间27日开启全球线上直
  • 外包干了2个月,技术退步明显...

    先说一下自己的情况 大专生 18年通过校招进入湖南某软件公司 干了接近4年的功能测试 今年年初 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了2年的女朋友
  • 调用halcon函数时的错误处理

    注 以下材料来自halcon帮助文档 因水平有限 难免有误 欢迎指正 0 概述 在遇到一个运行时错误时 HALCON C 会以默认的方式给出错误信息 并终止程序 然而 在某些情况下 我们并不希望按照这样的规则来处理错误 例如 当一个程序允许
  • centos7.8从卸载python2,安装python3

    因为目前所有环境都是python2 7 5 但是项目上使用的是python3 7 5 迫切需要使用python3 7 5验证 安装遇到困难 记录一下 首先卸载python2 如果不想卸载python2的可以跳过 这里卸载python2和其依
  • 信息图:iOS 7开发者需要知道的事

    如果你想为iOS 设备开发app 你需要知道如何与软件交互 如何设计 你还要知道苹果独特的开发理念和开发工具 真正的能力还需要成功地从其他行业领域借鉴核心概念 最后把所有这些东西糅合进你的信息库中 所以我们画了一张iOS 7开发者应该的知识
  • iOS开发:使用大图+脚本,生成各种size的app icon和图片素材

    美术UI在公司是宝贵的资源 集各种项目宠爱于一身 为了努力完成好老板的进度需求 不给UI添麻烦 程序员开始忙活了 在iOS里面 我们使用image assert来管理素材和app icon 为什么呢 因为方便 按照image assert要
  • 怎样在前端遍历后端服务器传递来的json字符串中的集合?

    怎样在前端遍历后端服务器传递来的json字符串中的集合 后端把一个List类型的集合先转换成json字符串然后返回给通过ajax返回给前端 如下图 后端服务器中的代码如下图 紧着着前端页面遍历 后端传递来的json字符串中的集合数据 先来看
  • 读论文(二) - BERT

    Introduction 预训练的语言模型 在改进自然语言处理任务方面非常有效 包括句子级别的任务 自然语言推理和释义 也包括分词级别的任务 NER和问答 将预训练的语言表示应用于下游任务有两种现有策略 基于特征 feature based
  • 循环神经网络(RNN)的基本原理及LSTM的基本结构

    来源于课上实验 结果清晰 遂上传于此 实验环境TensorFlow1 14 该课件仅用于教学 请勿用于其他用途 详细参考 实验笔记 实验视频 一 实验目的 学习掌握循环神经网络 RNN 的基本原理及LSTM的基本结构 掌握利用LSTM神经元
  • vulfocus靶场安装教程

    背景 漏洞把场是目前每个安全人员以及想学习信息安全的人必备的东西 但目前商业化产品居多 还有一些类似dwwa sqlilabs这类的开源项目 但是漏洞环境比较固定 使用完一次后就失去其作用 搭建的成本过高 每次启动的流程会比较繁锁 甚至很多
  • 【react】对state的理解

    state是类创建的实例对象上的一个状态属性 想要改变类的实例对象的值 就要用到构造器 但由于类组件都是继承的React内置的Component类 继承的类 要写构造器的话 就必须写super 改变state this state xxx