semi-design
semi-design copied to clipboard
Modal.method() keepDOM still work
问题
当设置 keepdom: true
, 然后调用 Modal.method
会重复创建 dom 的
解决方案
https://github.com/DouyinFE/semi-design/blob/main/packages/semi-ui/modal/confirm.tsx#L54
看了一下代码,加上 keepDOM={false}
应该就可以吧
function render(renderProps: ConfirmProps) {
ReactDOM.render(<ConfirmModal {...renderProps} keepDOM={false} motion={mergedMotion} />, div);
}
keepDOM 为 true,截图有问题
看起来是对这个API作用理解有误。 keepDOM是声明式调用时,当你change modal visible true/false 的时候,始终保持容器不销毁。
而如果你用 modal.info、create这种命令式调用时,是一定会新建的。这个API本身就不应该在命令式调用里使用。
命令式调用相当于,你call一次,就一定新建一个新的modal。如果你是要动态更新命令式调用的modal的内容,那么你可以用update。
如果你是要动态更新命令式调用的 modal 的内容,那么你除了update 也可以在 modal 的 children 中传自定义组件,去更新这个组件的内容。
命令式调用相当于,你call一次,就一定新建一个新的modal。如果你是要动态更新命令式调用的modal的内容,那么你可以用update。
不会,如果我设置了 keepDOM: false
是可行的。可以在官网看一下。我想表达的就是 keepDOM
不应该在命令调用中生效,而实际是生效的。
主要是想提到这一点
v2.30 已修复