React与使用Bootstrap5模态框的注意事项
文章标签:
bootstrap怎么使用的
这是一个依靠全局状态的组件Login,通过监听props变化(react-redux),来实现是否隐藏Bootstrap模态框
//Index.js组件
//...
loginModel = null;
componentDidMount(){
this.loginModel = new bootstrap.Modal(document.getElementById('loginModel'));
}
//...
componentWillReceiveProps(props) {
//监听是否打开登录框
if(props.showlogin){
this.loginModel.show();
}else{
this.loginModel.hide();
}
}
同时,登录完成将Model隐藏: 使用this.loginModel.hide();但是,发现这样使用的话是错误的:
unstable_flushDiscreteUpdates: Cannot flush updates when React is already rendering.
之后我将其改为this.props.showLogin(false);(通过dispatch修改全局state的showlogin属性);以继续使用componentWillReceiveProps来控制Model的显示或关闭;
我的想法是可能由于Login根节点就是id=loginModel;在自定义方法里使用了this.loginModel.hide就报错,而在componentWillReceiveProps中使用就不会;(强行解释[擦汗])
但报错具体原由暂不清楚,懂得伙伴希望能解释一下啦。