苗条的组件文本不会更新



我正在使用Blockly + SvelteJS,现在我正在尝试添加语言支持。我有工具箱。苗条的组件,看起来像这样:

<xml id="toolbox" bind:this={toolbox} style="display:none">
<category name={Msg.CATEGORY_LOGIC} colour="#5b80a5">
<block type="controls_if" />
</category>
</xml>
<script>
import Blockly from "blockly";
$: Msg = Blockly.Msg;
export let toolbox = undefined;
</script>

我还有一个脚本,它有update locale功能。它会更新Blockly。味精

import Blockly from "blockly";
import {categoryNames as categoryEN, blockNames as blockEN} from "./en_US.json";
import {categoryNames as categoryRU, blockNames as blockRU} from "./ru_RU.json";
export function applyBlocklyLocale(locale) {
switch (locale) {
case "en":
for (let key in categoryEN) {
Blockly.Msg["CATEGORY_" + key.toUpperCase()] = categoryEN[key];
};
for (let key in blockEN) {
Blockly.Msg["BLOCK_" + key.toUpperCase()] = categoryEN[key];
};
break;

case "ru":
for (let key in categoryRU) {
Blockly.Msg["CATEGORY_" + key.toUpperCase()] = categoryRU[key];
};
for (let key in blockRU) {
Blockly.Msg["BLOCK_" + key.toUpperCase()] = categoryRU[key];
};
break;
};
Blockly.Msg = Blockly.Msg
};

但是当我运行这个函数时,Blockly。Msg更新,工具箱xml不

这行不通:

$: Msg = Blockly.Msg;

反应性不跨越一定界限;它只在组件内工作,并通过组件间的props来实现。

你必须通过事件或使用存储来保存更改通知和反应性。

最新更新