反應的默認行爲是每次更改其狀態或道具時重新呈現組件(及其子組件)。
this.setState({isResized: true}); //trigger the rendering
你不必來處理每一個孩子裏面調整大小,只需辦理窗口大小調整(可能與適當的去抖,以提高性能)在父組件,因此設定的狀態,孩子們會無需任何其他代碼即可重新渲染。
這樣的事情應該工作
class ParentComponent extends Component{
resizeCallback(e){
this.setState({'isResized', true}); //re-render even MyChildComponent
}
componentDidMount(){
window.addEventListener('resize', this.resizeCallback);
//alternatively with underscorejs debounce
//window.addEventListener("resize", _.debounce(this.resizeCallback, 300));
}
componentWillUnmount(){
window.removeEventListener('resize', this.resizeCallback);
}
render(){
<div>
<MyChildComponent/>
</div>
}
}
聽起來類似於反應文檔提升狀態的例子。 https://reactjs.org/docs/lifting-state-up.html – spirift