We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
同一个插件 重复注册 引起的bug
由于在 run 方法中传入 config, 在 onLeafer 中想要使用,只能通过挂载到当前插件对象上实现
run
onLeafer
示例代码
export const plugin: IPlugin = { name: PLUGIN_NAME, importVersion: '1.0.0-beta.8', import: ['LeaferTypeCreator', 'LeaferEvent', 'PointerEvent'], config: null, run(LeaferUI: IObject, config: UserConfig): void { // config 挂载到当前对象 this.config = config; }, onLeafer(leafer: ILeafer) { // onLeafer 中拿到 config console.log(this.config) }, };
在 run 函数中,将获取的 config 挂载到当前插件上
config
如果这个插件只会使用一次没有问题,如果当注册多次时会覆盖之前的插件参数
由于在 plugin 实现中,直接使用了用户传入的对象,在 run 函数执行时所有相同插件对象的 this 指向的都是同一个,这就造成了即便 config 不同,也只有最后配置一个生效的问题。
plugin
this
异常代码示例
// 第一个插件:指定圆形触发事件 usePlugin(plugin, { includeTypes: ["Ellipse"], getContent(node) { const dom = ` <ul style="list-style: none; margin: 0; padding: 0; color: #333"> <li>节点类型:${node.tag}</li> <li>宽度:${node.width}</li> <li>高度:${node.height}</li> </ul> `; return dom; }, }); // 此时打开控制台,检查 `PluginManager.list` , config 是正常的 // ----------------------------------------------------------------------------- // 注册第二个插件:参数发生修改 // 指定矩形触发事件,此时会讲上面的参数覆盖,圆形将不会触发事件 usePlugin(plugin, { includeTypes: ["Rect"], getContent(node) { const dom = ` <ul style="list-style: none; margin: 0; padding: 0; color: #333"> <li>节点类型:${node.tag}</li> <li>x:${node.x}</li> <li>y:${node.y}</li> </ul> `; return dom; }, }); // 此时打开控制台,检查 `PluginManager.list` 会发现第一个插件的 `config` 变为第二个注册的参数
Leafer UI版本:
可复现地址:
复现步骤:
预期应当同时触发 两个插件
The text was updated successfully, but these errors were encountered:
收到,谢谢反馈~, 插件的应用范围是全局的,默认情况下最好只能注册一次,多次可能会引发很多其他问题,包含管理,我们后面会做限制。
如果想要有多个自定义的内容生效,可以通过在插件上挂载自定义的方法实现,例如: plugin.addConfig(), plugin上可以自由挂载自定义的类、方法、属性, 插件本身的变量名也可以自由定义~
Sorry, something went wrong.
No branches or pull requests
同一个插件 重复注册 引起的bug
由于在
run
方法中传入 config, 在onLeafer
中想要使用,只能通过挂载到当前插件对象上实现示例代码
在
run
函数中,将获取的config
挂载到当前插件上如果这个插件只会使用一次没有问题,如果当注册多次时会覆盖之前的插件参数
由于在
plugin
实现中,直接使用了用户传入的对象,在run
函数执行时所有相同插件对象的this
指向的都是同一个,这就造成了即便config
不同,也只有最后配置一个生效的问题。预期应当同时触发 两个插件
The text was updated successfully, but these errors were encountered: