ZhongAnTech / zarm

基于 React 的移动端 UI 组件库
https://zarm.design
MIT License
1.71k stars 225 forks source link

请问如何下断点调试 zarm@2.9.13 的 Toast 组件的 mountContainer? #1093

Closed zhenizhui closed 1 year ago

zhenizhui commented 1 year ago

Description

你好,我在一个 iframe 里面使用 Toast.show(),想使用 mountContainer 挂载到父页面中,但是发现吐司提示还是挂载在 iframe 的 body 元素里面。

Toast.show({
  stayTime: 10000,
  content: '您今日助力已完成,明日再来试试哦~',
  mountContainer: window.parent.document.getElementById('luckyActivity'),
});

我想自己下断点调试,以下是我的步骤。

进入项目根目录,找到 node_modules\zarm\package.json,发现入口是 "main": "lib/index.js",

# L: 407
var _toast = _interopRequireDefault(require("./toast"));

接着来到node_modules\zarm\lib\toast\index.js,下断点,然后运行业务代码,断点没有生效

image

我也试过在 node_modules\zarm\dist\zarm.js 调试,断点也没生效。

image

请教一下需要怎么调试 mountContainer ?

Environment

zhenizhui commented 1 year ago

Image_20230421090810

问题可能出在这里

mountContainer 有获取到元素 div#ice-container

但是 mountContainer instanceof HTMLElement 的值是 false,if 判断进不去,所以返回了 document.body

而且在 Call stack 中,我也发现了原来要在 es 的目录下的 toast 文件下断点才能生效 😂

JeromeLin commented 1 year ago

感谢反馈,这块逻辑好像是有点问题,我们尽快排查修复,未修复前可以先用 function 方式设置 mountContainer 的值来规避。

mountContainer: () => window.parent.document.getElementById('luckyActivity')
JeromeLin commented 1 year ago

zarm@2.9.18