-
产生问题的原因
在 table 中使用Modal弹窗,表格的每一次渲染都会产生一个蒙层的 div,因此导致了,蒙层的背景颜色变得的别黑
-
解决问题思路:
基础使用的都是用一个 visible 来控制弹窗的显示,因此会导致不该显示的蒙层也会显示,所以我们可以对每一个弹窗单独设置一个visible来管理
-
实现需要满足的条件:
- delVisible[]:用来存储不同弹窗的状态,可以直接创建
- id:可以标识不同弹窗的值,可以通过record方法拿到对应行的标识值
-
实现代码:
constructor(props) { super(props); this.state = { // 解决Modle弹窗问题 delVisible: [] }; } // 为每一个弹窗生成一个控制变量 showVisible = (id, state) => { const delVisible = this.state.delVisible delVisible[id] = state this.setState({ delVisible: delVisible }) } // Modal 上的使用 <Modal title="xxxxxx?" visible={this.state.delVisible[id])]} onOk={() => this.oKRefund(id))} onCancel={() => this.showVisible(id, false)} okText="确认" cancelText="取消" > xxxxxxxxxxxxxxxxx </Modal>```