我知道Child
组件可以调用BaseComponent
setTitle
方法。
但是,当Child
组件安装时,BaseComponent
'生命周期方法componentDidMount
将不会被执行。
class BaseComponent extends React.Component{
componentDidMount() {
console.log('baseComponent componentDidMount')
}
setTitle(title) {
document.title = title || 'default title'
}
}
class Child extends BaseComponent{
constructor() {
super();
}
componentDidMount() {
this.setTitle();
console.log('child componentDidMount')
}
render() {
return <div>react is awesome</div>
}
}
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
&#13;
我也知道HOC
可能是更好的解决方案。如果使用es5
,则mixins
是最佳方式。
但这不是我的问题。那么,是否可以执行BaseComponent
生命周期方法。
答案 0 :(得分:1)
你应该避免继承。就像你说的那样,HOC是要走的路...... 有关您的信息,您可以使用super:
调用父类class Child extends BaseComponent{
componentDidMount() {
super.componentDidMount(); // Call the parent class
this.setTitle();
console.log('child componentDidMount')
}
render() {
return <div>react is awesome</div>
}
}