位置: 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启用上下文管理

  • 佳能750d怎么样(佳能750)(佳能eos750d怎么样)

    佳能750d怎么样(佳能750)(佳能eos750d怎么样)

  • 苹果11原装电池多少毫安(苹果11原装电池价格表官网报价)

    苹果11原装电池多少毫安(苹果11原装电池价格表官网报价)

  • 苹果xr能遥控空调吗(iphonexr遥控器控制空调)

    苹果xr能遥控空调吗(iphonexr遥控器控制空调)

  • 超威电池售后三包规定(超威电池售后三轮车电话)

    超威电池售后三包规定(超威电池售后三轮车电话)

  • 手机摄像头旁边的小孔是什么东西(手机摄像头旁边发烫怎么回事)

    手机摄像头旁边的小孔是什么东西(手机摄像头旁边发烫怎么回事)

  • qq达人怎么才会掉(qq达人怎么变成0天)

    qq达人怎么才会掉(qq达人怎么变成0天)

  • 快手小店和魔筷有什么区别(快手小店和魔筷哪个好)

    快手小店和魔筷有什么区别(快手小店和魔筷哪个好)

  • iphone怎么查看上次关机时间(iphone怎么查看上次连接蓝牙时间)

    iphone怎么查看上次关机时间(iphone怎么查看上次连接蓝牙时间)

  • 群活跃度怎么提升?(个人群活跃度怎么提升?)

    群活跃度怎么提升?(个人群活跃度怎么提升?)

  • 无法安装库乐队是怎么回事(无法安装库乐队怎么解决)

    无法安装库乐队是怎么回事(无法安装库乐队怎么解决)

  • 淘宝足迹怎么查一年的(淘宝足迹怎么查去年的)

    淘宝足迹怎么查一年的(淘宝足迹怎么查去年的)

  • 华为flaal10啥型号(华为fla-tl10什么型号)

    华为flaal10啥型号(华为fla-tl10什么型号)

  • 怎么把自动回复删了(怎么把自动回复指定发个某个人)

    怎么把自动回复删了(怎么把自动回复指定发个某个人)

  • 华为怎么开启无线充电(华为怎么开启无视风险安装)

    华为怎么开启无线充电(华为怎么开启无视风险安装)

  • 抖音时间锁密码是多少(抖音时间锁密码一般是多少)

    抖音时间锁密码是多少(抖音时间锁密码一般是多少)

  • 计算器中ac和c什么键(计算器中ac和c什么区别)

    计算器中ac和c什么键(计算器中ac和c什么区别)

  • 淘宝怎么找关注的直播(淘宝怎么找关注的人)

    淘宝怎么找关注的直播(淘宝怎么找关注的人)

  • 荣耀手环5怎么连接手机(荣耀手环5怎么充电)

    荣耀手环5怎么连接手机(荣耀手环5怎么充电)

  • 微信好友删除之后聊天记录怎么恢复(微信好友删除之后红包还能领吗)

    微信好友删除之后聊天记录怎么恢复(微信好友删除之后红包还能领吗)

  • mate10上市时间

    mate10上市时间

  • 红米手机如何解除耳机模式(红米手机如何解锁)

    红米手机如何解除耳机模式(红米手机如何解锁)

  • ps如何放大缩小图层(ps如何放大缩小快捷键)

    ps如何放大缩小图层(ps如何放大缩小快捷键)

  • 手机微博发图片怎么去水印(手机微博发图片怎么不带水印)

    手机微博发图片怎么去水印(手机微博发图片怎么不带水印)

  • Linux中使用grep命令搜索文件名及文件内容的方法(linux的grep命令使用)

    Linux中使用grep命令搜索文件名及文件内容的方法(linux的grep命令使用)

  • 啥是完税凭证
  • 增值税专用发票抵扣期限
  • 过路费报销属于什么费用科目
  • 财务章备案和不备份区别
  • 其他应收款收到发票怎么写会计分录
  • 预授权撤销怎么撤销
  • 代开专用发票的企业如何享受小微免税优惠
  • 房地产企业拆迁补偿契税政策
  • 企业计提福利费时,贷记应付职工薪酬
  • 长期股权投资初始成本
  • 异地缴纳个人所得税
  • 境外公司付款给国内公司人民币
  • 个体户核定征收超过了怎么办
  • 年末一般纳税人应交增值税借贷调平什么意思
  • 小微企业月销售额不超过15万
  • 工资不在本公司发票报销可以吗?
  • 住房公积金管理官网
  • 工会工费缴纳标准
  • 现金流量表怎么做
  • 消费税在哪个环节征税
  • 职工餐厅账务处理
  • 出口退税申报里汇率计算方式选择
  • 华为matex3爆料
  • wd discovery怎么安装
  • 企业所得税税前扣除管理办法2018
  • 怎么解决windows许可证即将过期
  • uni-app实战教程
  • php的转义字符反斜杠
  • nodejs解压
  • 公司收到社保局的提醒函怎么办
  • 长期借款和实收资本
  • php数据统计分析
  • nodejs vue
  • fmt println
  • 织梦好用吗
  • 补缴以前年度企业所得税如何做账
  • 印花税申报完成如何缴纳
  • 企业之间的借款利息收入缴纳增值税吗?
  • Python中input输入多行文本
  • 罚款收入算是营收收入吗
  • mysql 查找语句
  • sql连接查询中AB
  • 增值税纳税申报类型有哪些
  • 简易征收的税款可以抵减
  • 进项认证以后如何处理
  • 水电费没有票怎么做账
  • 房地产按揭贷款放款条件
  • 公众号认证小额打款流程
  • 外聘人员差旅费用无票调增
  • 增值税不超过30万,普通发票可以开0税率吗
  • 技术研发费用是什么意思
  • 购车融资是什么意思
  • 建筑公司需要什么人员
  • 其他应收款有哪些科目
  • 期末自动结转期间损益
  • 房地产开发企业销售自行开发的房地产项目
  • 费用预算表怎么做
  • MySQL中KEY、PRIMARY KEY、UNIQUE KEY、INDEX 的区别
  • Linux CentOS MySQL数据库安装配置教程
  • linux命令实现
  • Win10预览版拆弹
  • Windows Server 2008疑难杂症
  • sm56hlpr.exe - sm56hlpr是什么进程
  • win7桌面图标变成了lnk
  • windows7装进u盘
  • windowsxp桌面没有我的电脑
  • fdisk硬盘分区工具
  • opengl入门教程(精)
  • 初始学历是什么意思
  • node搭建本地服务器运行html
  • linux网络编程有什么用
  • shell脚本switch
  • 批处理字符串截取
  • jQuery Easyui Tabs扩展根据自定义属性打开页签
  • jquery聚焦输入框
  • 卸载python后模块库还用卸载吗
  • 国家财政税务局
  • 什么是增值税一般纳税人证明
  • 怎么查个税交了多久
  • 商铺收税多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设