如何通过iframe调用创建工作项的弹窗?

Viewed 61

目前在插件层面创建工作项有两种方式:

1、使用平台的开放能力(createTask() 唤起新建工作项的弹窗)
2、使用iframe接口(非公开接口,慎用)。(目前在Wiki的页面内创建工作项中使用)

第一种方案的能力还没有补全,无法对创建工作项有更多的配置可能,而且必须要在ONES的产品内唤起。
第二种方案可以被嵌入到其他产品中,但需要自己处理登录会话流程。

1 Answers

目前做插件的时候调研了一部分iframe的方案,整理如下:

标品的新建工作项iframe 页面为之前wiki 组开出来的,但并没有通用化处理
在渲染过程中,组件挂载后会向宿主页postMessage 一个成功挂载的消息,并且需要宿主页向iframe 页面postMessage后才会显示。


  useEffect(() => {
    const fc = (event) => {
      const message = event.data
      if (message.type === 'defaultTitle') {
        iframeRef.current.contentWindow.postMessage({ type: 'defaultTitle', data: '' })
      }
    }
    window.addEventListener('message', fc, false)
    return () => {
      window.removeEventListener('message', fc)
    }
  }, [])


另外,标品iframe方案的扩充