react对于比较大的组件采用动态引入
type PropTypes = {
visible: boolean,
};
class Modal extends React.Component<PropTypes, any>{
constructor(props){
super(props);
this.state={
Child: null,
};
}
componentDidMount(){
import('./child').then(({default: Child})=>{
this.setState({Child});
})
}
render(){
const { visible } = this.props;
const {Child} = this.state;
return (Child && visible) ? <Child visible={visible} /> : <Spin />
}
}
// 子组件
class Child extends React.Component{
componentDidMount(){
// 只会执行一次
console.log('didmount');
}
componentDidUpdate(preProps){
// 不会执行
console.log(this.props, preProps)
}
render(){
return 'i am child';
}
}
visible经过打开、关闭、再打开,子组件的didmount只会执行一次,而didUPdate也是只在第一次时执行。这个和之前的认知有区别啊,要怎么做才能实现生命周期正常加载呢。
改为