Проблема в следующем
selected={isSelected(number)}
В этом выражении:
isSelected(number)
Svelte будет обновляться при каждом изменении любой переменной в выражении. То есть: либо isSelected
, либо number
.
В вашем случае вы хотите отреагировать на изменение selection
, и поэтому оно этого не делает.
Вы может встроить условие, так что переменная selection
прямо упоминается в выражении:
selected={selection.indexOf(number) > -1}
Или вы можете просто сделать это:
selected={selection, isSelected(number)}
Синтаксис запятой x, y
это просто несколько неясный синтаксис JS для выражения, значение которого разрешается до последнего элемента (попробуйте 'a', 'b', 'c'
в вашей консоли, чтобы понять, что я имею в виду) ... Но в этом случае он позволяет намекнуть Svelte, что ему следует обратить внимание к переменной selection
здесь.