react能干啥?
react最大的优势就是可以更方便的声明组件,复用组件
- react声明组件的方式,使用 ES6 的
class
声明组件,然后使用
1 | class Some extends React.component{ |
上面代码意思为:使用
class
创建一个Some
的组件,扩展到react
的组件库中,extends
(扩展,拓展)然后使用
render
函数渲染内部代码最后使用
return
方法返回组件内的结构代码这样导入该组件,就相当于导入该组件内的样式以及结构代码
导入组件
1 | import Some from '组件文件路径' |
组件之间传值
props:接收组件之间传值的
1 | class Some extends React.Component{ |
在
extends
实现继承创建的组件中,就得在constructor
(构造器)中使用super(props)
super()
表示父类的构造函数在
render
函数内可以通过this.props.属性名
获得从父组件传递过来的参数如果是在
render
函数外访问父组件传递过来的参数 ,那么就需要传递参数到constructor
内
1 | constructor(props){ |
在
constructor
访问父组件传递过来的属性,直接使用props
就可以获得传递过来的值props
接收过来的值,不管是在使用function
创建的组件,还是class
创建的组件中,都是只读的
state:用于存储每个组件的私有数据的
存储
1 | constructor(){ |
this.state={}
这个是固定写法
使用state
1 | render(){ |
使用外界传递的值props
1 | //父组件中 |
react中绑定事件
on+事件名 使用驼峰命名方式
1 | render(){ |
注册事件
1 | class Some extends React.Component{ |
在
react
规定函数内部,this
指向的是undefined
如果要在函数内使用this
,那么就必须使用箭头函数,使得this
指向外部创建的组件实例在每一个组件中,
this
指向的为当前组件对象
事件中修改数据
- 直接使用
this.state.msg="这是一个测试代码"
1 | headerClick(){ |
注意:使用
this.state.msg
虽然能修改数据,但是不会更新到视图中,这是react
的一个bug
- 使用
this.setState({})
改变值(推荐使用这种)
1 | headerClick(){ |
- 函数中:
oldDate
为设置之前设置的值 props
为外界传递进来的参数数据
由于
setState
是异步执行,所以,执行this.setState()
设置值之后,想立马拿到,那么就需要放在setState()
里的第二的参数回调内
1 | this.setState(()=>{ |
评论加载中