(я новичок в Svelte, поэтому вполне вероятно, что я здесь что-то не так делаю)
ОБНОВЛЕНИЕ: я добавил вторую, немного другую REPL, который может продемонстрировать проблему лучше. Попробуйте это: https://svelte.dev/repl/ad7a65894f8440ad9081102946472544?version=3.20.1
Я столкнулся с проблемой при попытке привязать ввод текста к реактивному значению.
I ' Я изо всех сил пытаюсь описать проблему словами, поэтому, надеюсь, уменьшенная демонстрация проблемы в прилагаемом REPL будет иметь больше смысла.
https://svelte.dev/repl/6c8068ed4cc048919f71d87f9d020696?version=3.20.1
Демо содержит два пользовательских <Selector>
компонента на странице.
Первому компоненту передаются два значения string ("one" и "two"):
<Selector valueOne="one" valueTwo="two"/>
Нажатие кнопок рядом с полем ввода устанавливает selectedValue
на одно из этих значений.
Это, в свою очередь, запускает следующую реактивную декларацию для обновления:
$: value = selectedValue
Вход поле привязано к этому реактивному значению:
<input type="text" bind:value>
Таким образом, нажатие кнопки «Один» устанавливает ввод текста на «один», а нажатие кнопки «Два» устанавливает поле ввода на «два».
Важно отметить, что вы все равно можете ввести что-либо в поле ввода .
Второй комп. nent передается два массива значений:
<Selector valueOne={[1, "one"]} valueTwo={[2, "two"]}/>
Снова при нажатии кнопок устанавливается selectedValue
на один из них.
Однако на этот раз объявление реактивной зависит от элемент массива:
$: value = selectedValue[1]
Все работает как прежде, кроме того, что теперь вы больше не можете вводить в поле ввода вообще .
Так что вопрос - почему <input bind:value>
ведет себя по-разному для этих двух:
$: value = aString
против
$: value = anArray[x]