位置: IT常识 - 正文

猿创征文|【React 三】组件实例的三大属性(state、props、refs)(关于猿猴的作文)

编辑:rootadmin
猿创征文|【React 三】组件实例的三大属性(state、props、refs)

目录

一、 State

1.概念

2.State的简单用法3. JS绑定事件 4.react 绑定事件

5.react this指向问题

6.修改state值

7.代码简写

二、props

1.概念

2.传参的基础方法、运算符传参

三、refs

定义

字符串形式的ref、回调函数下ref、createRef 创建ref容器


一、 State1.概念

推荐整理分享猿创征文|【React 三】组件实例的三大属性(state、props、refs)(关于猿猴的作文),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:猿文教育科技有限公司怎么样,关于猿猴的作文,猿类的作文,猿文教育科技有限公司怎么样,猿人作文,猿类的作文,猿类的作文,猿人作文,内容如对您有帮助,希望把文章链接给更多的朋友!

概念:state是组件对象最重要的属性,值是对象(可以包含多个key:value的组合),组件被称为`状态机`,通过更新组件的state来更新对应的页面显示(重新渲染组件),有state称为复杂组件。

2.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>Document</title> <style> .btn{ width: 100px; height: 40px; background-color: red; } .on{ background-color: gray; } </style></head><body> <div id="root"></div> <!-- 引入react核心库 --><script src="js/react.development.js"></script><!-- 引入操作dom的扩展库 --><script src="js/react-dom.development.js"></script><!-- 引入babel来解析jsx语法 --><script src="js/babel.min.js"></script> <script type="text/babel"> class IsLike extends React.Component { state = { flag:true } //箭头函数this指向上下文,静态不可改变 changeFlag=()=>{ this.setState({flag:!this.state.flag}) } render() { const {flag}=this.state return ( <div> <button className={flag?'btn':'btn on'} onClick={this.changeFlag}>{flag?'喜欢':'不喜欢'}</button> </div> ) } } ReactDOM.render(<IsLike/>,document.getElementById('root')) </script></body></html>

3. JS绑定事件let btn = document.getElementById('btn');btn.addEventListener('click',function(){   alert('按钮被点击了!');})btn.onclick = function(){ alert('按钮被点击了!');}function demo(){alert('按钮被点击了');} 4.react 绑定事件render(){return <a href='javascript:;' onClick={demo} className='btn'>{this.state.isflag?'已关注':'取消关注'}</a>}

说明:

·onclick 变为 onClick。

·{函数名}返回值给click,加()就会直接调用。

5.react this指向问题demo(){      console.log(this);//undefinedconsole.log('事件被点击了');}

举例说明:

class Person{     constructor(name,age) {                 this.name = name; this.age = age;     }say(){ console.log(this); } }const p1 = new Person('张三',18);p1.say();//p1为实例对象const p2 = p1.say;p2();//undefined 类采取是严格模式6.修改state值class MyClass extends React.Component{constructor(props) {      super(props);   this.state = {isflag:true};   this.demo = this.demo.bind(this);}render(){return <a href='javascript:;' onClick={this.demo} className='btn'>{this.state.isflag?'已关注':'取消关注'}</a>}demo(){    this.setState({isflag:!this.state.isflag})}} ReactDOM.render(<MyClass/>,document.getElementById('root'));

说明:

猿创征文|【React 三】组件实例的三大属性(state、props、refs)(关于猿猴的作文)

bind会生成一个新的方法 并传对象 改变this的指向必须使用setState 修改才有效,修改内容为合并。有值得修改没有的不动

7.代码简写class MyClass extends React.Component{state = {isflag:true}render(){return <a href='javascript:;' onClick={this.demo} className='btn'>{this.state.isflag?'已关注':'取消关注'}</a>} demo = () => {    this.setState({isflag:!this.state.isflag}) }}ReactDOM.render(<MyClass/>,document.getElementById('root'));

说明:

类中的属性直接赋值,省去构造函数。

自定义方法—用赋值语句的形式+箭头函数

二、props1.概念

每个组件对象都会有props(properties的简写)属性。

组件标签的所有属性都保存在props中。

props 是不可变的,只能通过 props 来传递数据。

2.传参的基础方法、运算符传参

其中先通过let创建了一个对象,在通过三点运算符,来遍历得到,对象里面的值

在通过对象结构得到props中的realname和age,GetName是Person组件的子组件,在Person中传值给GetName,GetName通过props接收

<!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>Document</title></head><body> <div id="root"></div> <!-- 引入react核心库 --><script src="js/react.development.js"></script><!-- 引入操作dom的扩展库 --><script src="js/react-dom.development.js"></script><!-- 引入babel来解析jsx语法 --><script src="js/babel.min.js"></script> <script type="text/babel"> class GetName extends React.Component { render() { return ( <div>姓名:{this.props.realname}</div> ); } } class Person extends React.Component { render() { const {realname,age} = this.props return ( <div> <GetName realname={this.props.realname}/> <span>年龄:{age}</span> </div> ); } } let p1 = {realname:'张三',age:19} ReactDOM.render(<Person {...p1}/>,document.getElementById('root')) </script></body></html>三、refs定义

组件内的标签可以定义ref来标识自己。

字符串形式的ref、回调函数下ref、createRef 创建ref容器

字符串形势,是直接通过ref绑定值,通过在点击事件中获取ref的值,ref如同把整个input表单传了过来,在获取值的时候需要点一下value来获取的是input表单的内容

通过ref中的箭头函数,绑定了值,在方法中直接获取即可,穿过来时,由于react的编译不需要写target但是,还是需要点出value

通过createRef来创建两个容器,通过对象的形势与ref绑定,直接就可以在方法中得到值,不过这里要注意,打印还是获取的时候在点value之前点一个current,如this.realname.current.value

<!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>Document</title></head><body> <div id="root"></div> <!-- 引入react核心库 --><script src="js/react.development.js"></script><!-- 引入操作dom的扩展库 --><script src="js/react-dom.development.js"></script><!-- 引入babel来解析jsx语法 --><script src="js/babel.min.js"></script> <script type="text/babel"> class Person extends React.Component { //createRef 创建ref容器 realname = React.createRef() age = React.createRef() ShowInfo=()=>{ //字符串 // const {realname,age}=this.refs // console.log(`姓名:${realname.value}年龄:${age.value}`); //回调函数 // let realname = this.realname.value // let age = this.age.value // console.log(`姓名:${realname}年龄:${age}`); //类绑定 console.log(this.realname.current.value); console.log(this.age.current.value); } render() { return ( /*字符串形势 <div> <p><input type="text" placeholder="请输入姓名" ref='realname'/></p> <p><input type="text" placeholder="年龄" ref='age'/></p> <p><button onClick={this.ShowInfo}>提交</button></p> </div> */ //回调函数 // <div> // <p><input type="text" placeholder="请输入姓名" ref={e=>this.realname=e}/></p> // <p><input type="text" placeholder="年龄" ref={e=>this.age=e}/></p> // <p><button onClick={this.ShowInfo}>提交</button></p> // </div> //createRef 创建ref容器 <div> <p><input type="text" placeholder="请输入姓名" ref={this.realname}/></p> <p><input type="text" placeholder="年龄" ref={this.age}/></p> <p><button onClick={this.ShowInfo}>提交</button></p> </div> ); } } ReactDOM.render(<Person/>,document.getElementById('root')) </script></body></html>
本文链接地址:https://www.jiuchutong.com/zhishi/299791.html 转载请保留说明!

上一篇:大数据框架之Hadoop:MapReduce(三)MapReduce框架原理——OutputFormat数据输出(大数据相关框架)

下一篇:chatGPT之Python API启用上下文管理

  • 抖音怎么删除作品(抖音怎么删除作品中的图片)

    抖音怎么删除作品(抖音怎么删除作品中的图片)

  • 荣耀30手机卡槽的打开方法(荣耀30手机卡槽位置)

    荣耀30手机卡槽的打开方法(荣耀30手机卡槽位置)

  • 电脑怎么建立文件夹(电脑怎么建立文件夹存照片)

    电脑怎么建立文件夹(电脑怎么建立文件夹存照片)

  • powerpoint2016演示文稿的文件扩展名

    powerpoint2016演示文稿的文件扩展名

  • wps怎么查找重复内容(wps怎么查找重复部分)

    wps怎么查找重复内容(wps怎么查找重复部分)

  • 华为智慧分屏怎么用

    华为智慧分屏怎么用

  • 充电器充了一夜不变灯(充电器充了一夜忘拔了)

    充电器充了一夜不变灯(充电器充了一夜忘拔了)

  • nsf文件怎么打开(nsi文件怎么打开)

    nsf文件怎么打开(nsi文件怎么打开)

  • 微信分身要不要重新注册账号

    微信分身要不要重新注册账号

  • 重新下载的微信怎么恢复聊天记录(重新下载的微信怎么才能恢复聊天记录)

    重新下载的微信怎么恢复聊天记录(重新下载的微信怎么才能恢复聊天记录)

  • 腾讯视频怎么下载到本地(腾讯视频怎么下载到手机相册)

    腾讯视频怎么下载到本地(腾讯视频怎么下载到手机相册)

  • 小辣椒八开微信是官方吗(小辣椒 微信)

    小辣椒八开微信是官方吗(小辣椒 微信)

  • 为什么有的抖音视频不能分享(为什么有的抖音有同城,我的没有)

    为什么有的抖音视频不能分享(为什么有的抖音有同城,我的没有)

  • 淘宝直播黑屏怎么回事(淘宝直播黑屏怎么办)

    淘宝直播黑屏怎么回事(淘宝直播黑屏怎么办)

  • 荣耀20耳机插上之后用不了是什么问题(荣耀20耳机插上还是外放)

    荣耀20耳机插上之后用不了是什么问题(荣耀20耳机插上还是外放)

  • 无原彩显示什么意思(没原彩显示的是原装的吗)

    无原彩显示什么意思(没原彩显示的是原装的吗)

  • 手机摔了一下有影响吗(手机摔了一下有黑块怎么办)

    手机摔了一下有影响吗(手机摔了一下有黑块怎么办)

  • 抖音发的消息能撤回吗(抖音发的消息能修改吗)

    抖音发的消息能撤回吗(抖音发的消息能修改吗)

  • 苹果11默认铃声是什么(苹果11默认铃声叫什么名字)

    苹果11默认铃声是什么(苹果11默认铃声叫什么名字)

  • 手机突然重启怎么回事(手机突然重启怎么回事红米)

    手机突然重启怎么回事(手机突然重启怎么回事红米)

  • ColorOS7更新了什么东西(coloros7正式版更新名单)

    ColorOS7更新了什么东西(coloros7正式版更新名单)

  • 苹果打字标点符号在哪(苹果打字标点符号能锁定么)

    苹果打字标点符号在哪(苹果打字标点符号能锁定么)

  • 华为超级文件系统是什么(华为超级文件系统开源)

    华为超级文件系统是什么(华为超级文件系统开源)

  • oppor17可以无线充电吗(oppor17手机支不支持无线充电)

    oppor17可以无线充电吗(oppor17手机支不支持无线充电)

  • 网站打开速度慢是怎么回事(网站打开速度慢怎么办)

    网站打开速度慢是怎么回事(网站打开速度慢怎么办)

  • 58同城如何发布租房信息(58同城如何发布广告)

    58同城如何发布租房信息(58同城如何发布广告)

  • u盘和sd卡有什么区别(u盘和sd卡有什么用)

    u盘和sd卡有什么区别(u盘和sd卡有什么用)

  • Go分布式爬虫笔记(五)(分布式网络爬虫)

    Go分布式爬虫笔记(五)(分布式网络爬虫)

  • 报关单汇率按出口日期还是申报日期
  • 个人开具发票需要税号吗
  • 没有社保可以缴费吗
  • 支付招聘费收到专票怎么记账
  • 公司报销费用发票怎么开
  • 计划成本法会计分录例题
  • 非货币性资产交换固定资产清理
  • 应收账款多记如何调账?
  • 增值税补交还有没有责任
  • 存货可变现净值与成本孰低 考虑销量吗
  • 发票融资贷款应该怎么做账?
  • 企业缴纳社保费一个月多少钱
  • 增值税普通发票和电子普通发票的区别
  • 收入费用类科目结转至本年利润
  • 土地增值税清算规程实施细则
  • 餐费专票认证了怎么办
  • 增值税普通发票怎么开
  • 股息红利个人所得税扣税失败
  • 社保和个税怎么个对应法
  • 免税销售额收入不含税收入怎么算
  • 小规模纳税人核定征收标准
  • 怎样理解递归
  • 并购重组中需要哪些条件
  • 应付账款无法支付所得税处理
  • 电子发票没有发票号码是怎么回事
  • 汇算清缴前可以更改去年的账吗
  • 增资印花税税目
  • 企业发生的哪些业务可以使用简易计税法
  • 定额备用金的账务怎么做
  • 建筑总承包企业资质
  • 支付固定资产运杂费计入什么科目
  • mac应用程序安装权限在哪找
  • win10j截图
  • mac安装软件不用密码
  • win11任务栏如何设置在最左边
  • linux系统中用户账户有哪些分类
  • 写一篇推荐书
  • 筹建期的银行利息收入分录
  • 拆迁货币什么意思
  • 计提五险一金的分录怎么写
  • 跨平台桌面程序
  • bds.exe
  • 现金流方法
  • 最贵的安卓应用软件
  • 增值税常见账务处理方法
  • 盛开的樱花和姬子的故事
  • 支付劳务公司的劳务费计入应付账款还是其他应付款
  • 长期借款和实收资本
  • php技术
  • 油气勘探开发
  • 劳务公司怎么申请办理
  • 物业管理费开票类目
  • 帝国cms源码
  • java8 (jdk 1.8) 新特性——Lambda
  • 公司向法人借款需要多久还清
  • 新公司筹建期要做账吗
  • 新成品油发票开具的模块解密是?
  • 如何设置固定资产累计折旧增值税进项税额缺损入账科目
  • 出差补贴要不要交个税呢?
  • 如何快速删掉通讯录联系人
  • 材料暂估入库需要什么原始凭证
  • 车子以旧换新还能贷款吗
  • 将购进的材料用于自制生产用设备
  • 公交公司财政补贴
  • 公司买灭草剂怎么入账
  • 电子记录表怎么填写
  • 商品折扣计入哪个科目
  • 自产产品赠送会计处理
  • 企业搬迁补偿款免税的法律依据是什么
  • 会计软件包括
  • win101909玩dnf怎么样
  • debian和ubuntu server
  • win7隐藏文件怎么调出来
  • window7iis配置步骤
  • 使用jquery实现的项目
  • linux如何启动tomcat
  • Unity3D游戏开发培训课程大纲
  • jQuery webuploader分片上传大文件
  • python冒泡排序流程图
  • 四川国税发票手机查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设