我正在尝试为 Figma 创建一个插件,到目前为止一直运行良好。它基于他们在 github 页面上提供的反应示例:https ://github.com/figma/plugin-samples/tree/master/react
在此示例中,我创建了一个按钮,单击该按钮将调用此函数:
(file: ui.tsx)
onClick = () => {
parent.postMessage({pluginMessage: {type: 'GetData'}}, '*');
};
这是 parent.postMessage 是 figma 提供的一个函数,用于与项目中的另一个文件 code.ts 进行通信。该文件将接收带有 pluginMessage 作为参数的 postMessage,它按预期工作。接收到这个的 code.ts 如下所示:
(file: code.ts)
figma.ui.onmessage = msg => {
if (msg.type === 'GetData') {
figma.ui.postMessage({"title": figma.currentPage.selection[0].name});
}
};
该文件接收消息,并在设置 GetData 后进入 if 语句。直到这里,一切都很好。我遇到的问题是 figma.ui.postMessage({}),它应该回调 ui.tsx 中的 onmessage 函数:
(file: ui.tsx)
onmessage = (selection) => {
console.log(selection);
};
根据 Figma 的文档,这个 onmessage 函数应该从 code.ts 中的 postMessage 接收对象。然而,这永远不会发生;它永远不会被调用。我无法访问 ui.tsx 中的当前选择,所以我需要来自 code.ts 的数据。有没有办法将这些数据传递给 ui.tsx,或者有谁知道为什么这不起作用?