0
我知道Child
組件可以調用BaseComponent
setTitle
的方法。React,父類是否在子類繼承並裝入時運行生命週期方法?
但是,看起來安裝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>
}
}
<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>
我也知道,也許HOC
是更好的解決方案。如果使用es5
,則mixins
是最好的方法。 但這不是我的問題。那麼,是否有可能執行BaseComponent
生命週期方法。
有趣的〜我也使此代碼'React.Component.prototype.setTitle'。這是一種不調用'super.someMethod'的方法(因爲我不想每次調用它,我希望它在每個子類'componentDidMount'時都會執行),並且在子內部'componentDidMount'中自動執行它? – novaline