baidu / amis

前端低代码框架,通过 JSON 配置就能生成各种页面。
https://baidu.github.io/amis/
Apache License 2.0
17.11k stars 2.48k forks source link

想触发自定义组件(amis-widget-cli开发)的reload重载方法,提示组件动作没有找到,大佬帮忙看看哪里出了问题? #10387

Closed joelost closed 3 months ago

joelost commented 3 months ago

实现场景:

点击刷新按钮,触发我的流程图组件重新加载渲染。(流程图是用amis-widget-cli开发的react组件)

image

存在的问题:

点击直接报错

image

当前方案:

流程图组件代码:

image

context打印情况:

image

好几处undefined???导致注册不上吗???

joelost commented 3 months ago

@joelost 你这个是react组件,amis-widget(组件注册器)层没有做任何包裹,出现问题基本上可以判断是组件本身设计有问题。初步怀疑没有指定 contextType, 看下这个使用文档:https://aisuda.bce.baidu.com/aisuda-docs/NPM%E7%BB%84%E4%BB%B6%E6%89%A9%E5%B1%95%E5%8C%85/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%A6%82%E4%BD%95%E5%AF%B9%E6%8E%A5amis%E4%BA%8B%E4%BB%B6%E5%8A%A8%E4%BD%9C。

好的,我看看

wibetter commented 3 months ago

@joelost 不好意思哈,刚没注意到你的截图,看写法是没问题的,怀疑可能是amis最近改动影响导致reload失效,我们先排查和定位下,有结果反馈给你。

wibetter commented 3 months ago

@joelost 我这边刚验证了下,是可以正常触发自定义组件的reload方法,

image image

写了简单的例子,你对比下:https://github.com/aisuda/react-custom-widget-template/tree/feat-api-data

joelost commented 3 months ago

@joelost 我这边刚验证了下,是可以正常触发自定义组件的reload方法, image image 写了简单的例子,你对比下:https://github.com/aisuda/react-custom-widget-template/tree/feat-api-data

确实,我这边在模板上开发测试都是没有问题,打出umd包被我另外一个较新版本的页面设计器(6.3.0)引用时,报了上述问题。

joelost commented 3 months ago

总感觉较新版本的amis没有把scope context里的一些属性设置完整,导致registerComponent失效。