尽管数据发生变化,Svelte UI 仍未更新

标签 svelte svelte-3

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

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

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

我做错了什么(没有)? 🧐

最佳答案

如果删除 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>

关于尽管数据发生变化,Svelte UI 仍未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70441718/

相关文章:

javascript - 如何引用 Svelte 组件的父组件?

javascript - supabaseUrl 是必需的 sveltekit

svelte - 如何返回 Svelte 组件的渲染 HTML?

ecmascript-6 - 如何在 svelte 中公开一个可以接受参数进行渲染的函数?

javascript - Svelte3 输入验证

local-storage - 将 Svelte 存储持久保存到 localStorage

svelte - 在等待一段时间后显示加载程序的 slim 方法是什么?

typescript - 无法使用 TypeScript 将 prop 传递给 svelte 中的组件

jquery - 如何使用 npm 从 svelte 使用 jquery 和数据表