【发布时间】:2020-07-04 14:58:48
【问题描述】:
(我是 Svelte 的新手,所以我很可能在这里做错了)
更新:我添加了第二个稍微不同的 REPL,它可以更好地证明问题。试试这个:https://svelte.dev/repl/ad7a65894f8440ad9081102946472544?version=3.20.1
我在尝试将文本输入绑定到反应值时遇到了问题。
我正在努力用文字来描述这个问题,所以希望在随附的 REPL 中对该问题进行简化的演示会更有意义。
https://svelte.dev/repl/6c8068ed4cc048919f71d87f9d020696?version=3.20.1
该演示在一个页面上包含两个自定义<Selector> 组件。
第一个组件被传递了两个字符串值(“one”和“two”):
<Selector valueOne="one" valueTwo="two"/>
单击输入字段旁边的按钮将selectedValue 设置为这些值之一。
这反过来又会触发以下响应式声明进行更新:
$: value = selectedValue
输入字段绑定到这个反应值:
<input type="text" bind:value>
所以点击“一”按钮将输入文本设置为“一”,点击“二”按钮将输入字段设置为“二”。
重要的是,您仍然可以在输入字段中输入任何内容。
第二个组件被传递了两个数组值:
<Selector valueOne={[1, "one"]} valueTwo={[2, "two"]}/>
同样,单击按钮将selectedValue 设置为其中之一。
不过这次反应式声明依赖于一个数组元素:
$: value = selectedValue[1]
一切都和以前一样,除了现在您根本无法再在输入字段中输入内容。
所以问题是 - 为什么<input bind:value> 对这两者的行为不同:
$: value = aString
对
$: value = anArray[x]
【问题讨论】:
标签: svelte-3