react日记

本文详细介绍了React编程中的关键点,包括函数式组件的命名规则、Babel编译后的严格模式、this的指向变化、事件绑定的正确做法以及类方法中的this绑定。同时,讲解了构造函数、render方法与类方法中this的区别,以及如何通过静态属性和解构赋值来优化代码。此外,还探讨了props、state和refs的使用,以及ref的三种用法,为React开发提供了实用的指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.函数式编程首字母必须大写(jsx规定)且标签必须闭合
2.经过Babel编译,进入严格模式=》禁止this指向window,所以指向undefined
3.mycompoennt继承自react。component
render函数放在mycomponent的原型对象上,供实例使用
render的this指向mycomponent实例对象==mycomponent组实例对象
而函数式编程因为没有构造所以没有this什么的
有state的式复杂组件,state就是数据
5.react如何绑定事件,有需要注意的地方,onclick需要写onClick且调用户数不可以写“demo()”要写onClick={demo}如果写的是demo()的话,在解析的时候会当成赋值语句, 执行完console.log(‘被点击了’),然后赋值给onclick,这显然不行,会赋给onclick一个undefined的值(P14)
6.类中方法this的指向(p15)
类中自动开启严格模式(可以局部开启严格模式),里面的方法this指向window的话为undefined
在类中写οnclick=this.changeweather,console.log(this)指向的是undefined,因为这里不是实例调用,是把changeweather这个回调给了onclick
如果想拿到正确的this,需要使用bind,这时候调用的就是实例上的changeweather了,而不是原型上的changeweather
p1.study() 实例调用
const x=p1.study x() 直接调用,所以是window
7.construcor只调用一次,用来创建实例,但是render函数会调用多次,每改变一次数据就调用一次
8.render和changeweather中的this为什么有区别呢,同在react.component上,因为render是实例调用,changeweather是直接调用οnclick=this.changeweather,所以它的this指向window
9.类中追加属性,可以直接在构造器外写,不用写let,直接a=1就可以了(这个a是直接放在每个实例对象上的),state可以放在公共的地方,同时方法也可以使用changeweather=function(){}这样的语句实现a=1的效果,放在每个实例上.
自定义方法写法:::::赋值语句+箭头函数(赋值语句写法将方法放在实例上,箭头函数解决this指向)
10.解构赋值在react中很好用,比如{name:“tom”,age:18}可以这么写const{name,age}=this.props,就可以直接获取到想要的值了
11.解构赋值不能解构对象,但是{…person}这样的写法可以,同时react中{}和原生js中的{}不一样,前者是分隔,在Babel和react的作用下实现,后者是对象花括号。解构赋值后还可以修改同名属性,例如person={name:’“xx”,age=18},person2={…person,name:“jack”}这样把原person属性修改了
12.props设置,
1.person.propTypes={ name:PropTypes.string.isRequired}两个propTypes首字母P大小写不一样,注意一下。函数比较特殊需要写 speak.func,而不是写全称
2.person.defalutProps={name:“xx”}设置默认名字为xx
13.类的简写
我们前面在学给类实例上加属性,直接写a=1,就加在每个实例上面了,现在是给类本身上加东西需要写 static,就可以了。
static propTypes={name:PropTypes.string.isRequired}和上面那个效果一样
14.类中写构造器,写不写都可以,但是写了就得接props且super(props),如果不接props,那么在构造器中就不能获得this.props(这里的this指向实例)(了解即可,用不到的,省就完了)
15.实例三大属性:state,props,refs。函数式编程因为没有实例,所以不能碰这三大属性,不过因为它可以传参数,所以可以搞一搞props。传入参数,解构赋值。(react会自动收集参数生成一个props对象)
function person(props){
const {name,age}=props
}
想对他进行限制的话就不能用static了,需要用原始方法person.propTypes与person.defaultProps
16.refs给原生打标识,需要注意的是,获取时const {input1}=this.refs(refs是一个对象,需要对象解构)
17.react中写{}代表里面写的是js代码,注释{/* */}
18.内联ref和class形式ref(将函数体写在外部,而不是内联形式)都可以用,不会有啥问题,只是内联在修改数据的时候会调用两次
19.ref的三种用法①字符串形式②函数回调形式ref={©=>{this.input1=c;console.log©}}③react.createRefs较为繁琐在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值