-
Notifications
You must be signed in to change notification settings - Fork 3.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
异步请求回来后Modal多次闪现等问题 #916
Comments
1、弹窗的 visible 只要不变,就不会被关闭。 |
1.弹窗的visible没有变,但是在发送dispatch后被关闭了又重新打开了,所以用户看到的是闪现了一下。 |
检查弹窗的visible什么时候被设为false,你发送dispatch被关闭后又打开已经说明了问题 |
@HuangLotus visible 没有改变,弹窗是不会闪的。如果你确认是没有动 visible 的地方。你看下是否其他的组件里面也有调用 modal 的地方。这里是官方给的建议 https://ant.design/components/modal-cn/#清空旧数据 |
@zjxpcyc @jiangbo2015 谢谢,问题已经全部解决了。 |
上面的方法太复杂了,你不要用 ModalGen=()=><Modal/> 而是使用 <div>
{modalVisible ? <Modal key={modalKey} {...ModalProps}/>
</div> 在状态树里面维护modalKey |
可以将Modal放在父组件中使用父组件中的 modalVisible属性去控制模态框的显示和隐藏。 // 子组件 |
现在我有2个问题。
第一个问题:我有一个Modal弹窗,我在弹窗里面点击一个btn 发送异步请求后,我想直接把这个请求返回的数据在不关闭Modal的情况下显示在Modal上。
代码如下:
effects中 代码如下:
如果我不加this.state.isMounted这个判断,就会报以下错:
warning.js:36 Warning: setState(...): Can only update a mounted or mounting component. This usually means you called setState() on an unmounted component. This is a no-op. Please check the code for the FormulaCheckBtn component.
但是问题是我加了这句if后,我这句this.setState({'validataResult': data});根本不会执行到。根据我的console,this是可以拿到的啊。没有setState成功,我异步请求回来的数据就没法显示到Modal上,(⊙o⊙),所以为什么没有执行到呢?或者说怎样才能让我异步请求回来的数据正确渲染到我的Modal中呢?我能想到的是通过state.但是现在setState又不行。
第二个问题是:在dispatch后,我在effects中根本没调用put去执行reducer中的改变state的方法,但是根据我打印出来的信息整个state都改变了致使我的component重新render了。直接表现是我的Modal闪了一下,重新render显示了一下。
所以怎样才能让已经显示的Modal不再闪退再多余的重现,而是保持不动,直到我操作完毕后再手动关闭?或者说怎样才能不触发重新render?(关于这个不重新触发的问题,我也查了好几个case,有说用onComplete直接调用回调的,恩我使用了但是遇到上面的第一个问题,或者说用三元运算符的,见#349,但是也不行)
初次使用dva+ant,感觉还是比较好用的,但是我个人对里面有些地方可能不是很理解,所以好崩溃,这个问题调了好久了呢,有人遇到过吗?求指点。
The text was updated successfully, but these errors were encountered: