【问题标题】:Why is this parent variable not changing?为什么这个父变量没有改变?
【发布时间】:2021-06-25 20:54:36
【问题描述】:

为什么在这个 REPL 中:App.svelte 中的 https://svelte.dev/repl/0b2fc740a59847c19b2471b4a1459d42?version=3.38.3 名称在我使用表单输入更改时没有更新?

name 在 Form.svelte 中发生变化。

为什么?

双向绑定不是一直开启吗?

【问题讨论】:

标签: javascript svelte svelte-3 two-way-binding


【解决方案1】:

您永远不会将父母的name 绑定到孩子的name

只是将父级的name 作为道具传递给子级就给了子级的name 一个默认值,但是一旦子级的版本被修改,它就会断开连接(另外,如果父级重新渲染,我是 99%肯定孩子会失去状态)。你需要像这样绑定name

<h1><Form bind:name></Form></h1>

苗条的 REPL 链接:https://svelte.dev/repl/30859806c88c449daba8be279fbce537

<!-- App.svelete -->

<script>
    import Form from "./Form.svelte";
    
    let name = 'world';
    
    $: console.log("name:", name)
</script>

name in App.svelte: {name}

<!-- **bind the name** -->
<h1><Form bind:name></Form></h1>

<!-- Form.svelete -->

<script>
    export let name;
</script>

name in Form.svelte: {name}

<form on:submit|preventDefault>
    <input id="name" bind:value={name} />
</form>

【讨论】:

    猜你喜欢
    • 2022-12-06
    • 1970-01-01
    • 2022-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多