尽管数据发生了变化,但Svelte UI并未更新



我正在尝试让按钮切换抽屉组件以打开/关闭。

我在这个REPL中有一个简化的例子

我目前正在使用一个导出函数的模块上下文,以便两个组件的父级都可以调用它。函数被调用,数据被更新,但UI不会对此做出反应。

我做错了什么?

如果删除context="module"部分,则可以将函数导出为变量,并在父级上使用bind:toggleSomeComp

示例:

<!-- SomeComp.svelte -->
<script>
let isOpen = false;
export const toggleSomeComp = () => {
isOpen = !isOpen;
console.log('toggle called, isOpen now = ', isOpen);
}
</script>
<hr/>
someComp isOpen? -> {isOpen}
<!-- App.svelte -->
<script>
import Button from './Button.svelte';
import SomeComp from './SomeComp.svelte';
let name = 'world';
let toggleSomeComp;
</script>
<h1>Hello {name}!</h1>
<Button on:clicked={() => toggleSomeComp()}>
Button is sibling of SomeComp
</Button>
<SomeComp bind:toggleSomeComp></SomeComp>

像这样通过context="module"在同级之间共享数据时,必须使用存储。所以

export let isOpen = writable(false)

如果其他答案对您没有帮助,请确保public/index.html文件中bundle.js文件的路径是正确的。这就是我的问题,将该路径更改为最近更新的build.js文件为我解决了这个问题

<html>
<head>
<script defer src='bundle/bundle.js'></script> <!-- Make sure this path is correct -->
</head>
<body>
<div id="root"></div>
</body>
</html>

最新更新