Closed itaober closed 1 month ago
原 Dialog.show 方法调用返回的 destory 方法固定为 noop,不能按照预期行为工作:
Dialog.show
destory
noop
调用 Dialog.show 时,return 的执行会优先于 TempDialog 组件中方法的执行。原 destory 为基础类型,无法在调用时获取到最新的期望内容。
return
TempDialog
用 Map 存储 id-close 方法键值对,因为 Map 是引用类型,故在使用方调用时,能根据 id 拿到最新且对应的销毁方法。 其中 id 为 rv-dialog-root--${Date.now()},实际业务中可保证基本唯一。
Map
rv-dialog-root--${Date.now()}
具体代码见 PR。
PR preview has been successfully built and deployed to https://react-vant-pr-740.surge.sh.
问题
原
Dialog.show
方法调用返回的destory
方法固定为noop
,不能按照预期行为工作:原因
调用
Dialog.show
时,return
的执行会优先于TempDialog
组件中方法的执行。原 destory 为基础类型,无法在调用时获取到最新的期望内容。修复方式
用
Map
存储 id-close 方法键值对,因为Map
是引用类型,故在使用方调用时,能根据 id 拿到最新且对应的销毁方法。 其中 id 为rv-dialog-root--${Date.now()}
,实际业务中可保证基本唯一。具体代码见 PR。