constructor笔记01
官网描述:如果不初始化state或不进行方法绑定,则不需要为React组件实现构造函数。
如此只有两种情况需要写constructor
1.初始化state
class Demo extends React.Component {
constructor() {
super()
this.state = {name:'dayDreamer'}
}
render() {
return (
<div>
111
</div>
);
}
}
2.进行方法绑定
class Demo extends React.Component {
constructor() {
super()
this.state = {name:'dayDreamer'}
this.log = this.log.bind(this)
}
render() {
<div>
<button onClick={this.log}>按钮</button>
</div>
};
log() {
console.log('被点击')
}
}
若不存在以上情况,constructor构造器可以省略不写
name在构造器里和super里传与不传props有什么影响呢?
有以下几种情况:
- 都传props
constructor(props) {
super(props),
console.log(this.props) //此处输出props对象
}
- 都不传props
constructor() {
super(),
console.log(this.props) //此处输出undefined
}
- 构造器传但是super不传props
constructor(props) {
super()
console.log(this.props) //此处输出undefined
}
- 构造器不传但是super传props
constructor() {
super(props)
console.log(this.props) //报错
}