反应的默认行为是每次更改其状态或道具时重新呈现组件(及其子组件)。
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