props.children属性
props.children 就是我们在调用组件时,填充在组件标签里面的内容。
如果我们在使用组件的时候,内部有标签怎么获取?
此时我们在浏览器输出可以看到
此时我们可以通过props.children来获取
class Person extends React.Component{
render (){
console.log(this)
return
hello
{this.props.name}
{this.props.children}
}
}
props 的注意事项
props 用于传递数据,这个数据是一个单向传递,从根节点组件向它的子孙组件传递,逆向传递是不被允许的
单向数据流
- react 中关于数据的流动有一条原则,就是单向数据流,自顶向下,从父组件到子组件
- 单向数据流特性要求我们共享数据要放置在上层组件中
- 子组件通过调用父组件传递过来的方法更改数据
- 当数据发送更改时,react会重新渲染组件
- 单向数据流时组件之间的数据流动变得可预测,使定位错位变得简单
子组件如果想要修改根节点组件的状态,需要根节点组件给子孙组件传递事件方法
此时在click函数中获取不到this而报错
使用这种方法可以解决this问题
但是这种写法并不推荐,虽然可以解决,但是每个事件毕竟都有构造函数
我们可以使用构造函数解决
class Person extends React.Component{
constructor(){
super();
this.click=this.click.bind(this)
}
click(){
console.log(this) //undefined
// 为了在回调中使用 `this`,这个绑定是必不可少的
this.props.onDJ()
}
render (){
console.log(this) //在props中获取 DJ属性
return
}
}
事件函数中this问题
-
-
在构造器constructor里我们需要对事件函数进行this绑定,否则函数中的this都是undefine
通过 props.children 属性可以获取到在调用组件时填充到组件标签内的内容