(Я новичок в Svelte, поэтому вполне вероятно, что я здесь что-то делаю не так)
ОБНОВЛЕНИЕ: я добавил второй, немного другой REPL, который может лучше продемонстрировать проблему. Попробуйте это: https://svelte.dev/repl/ad7a65894f8440ad9081102946472544?version=3.20.1
Я столкнулся с проблемой при попытке привязать ввод текста к реактивному значению.
Я изо всех сил пытаюсь описать проблему словами, поэтому, надеюсь, уменьшенная демонстрация проблемы в прилагаемом REPL будет иметь больше смысла.
https://svelte.dev/repl/6c8068ed4cc048919f71d87f9d020696> >
Демонстрация содержит два пользовательских <Selector>
компонента на странице.
Первому компоненту передаются два строковых значения («один» и «два»):
<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
vs
$: value = anArray[x]