Size: a a a

2020 October 12

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Совет для всех: 1) всегда включайте immutable. 2) помните что реактивность срабатывает только если значение изменилось (строгое сравнение). 3) помните что сложные типы всегда имеют значение «ссылка»
источник

L

Lupusregina[beta] in Svelte [svelt]
Pavel 🦇 Malyshev
Совет для всех: 1) всегда включайте immutable. 2) помните что реактивность срабатывает только если значение изменилось (строгое сравнение). 3) помните что сложные типы всегда имеют значение «ссылка»
а первое зачем
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Надо ещё раз попробовать что ли закинуть идею включить иммутабл по-умолчанию
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Lupusregina[beta]
а первое зачем
Чтобы остальное было верным, типа: true && true && true
источник

L

Lupusregina[beta] in Svelte [svelt]
я помню имутабельность включил как то, у меня все поломалось
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Lupusregina[beta]
я помню имутабельность включил как то, у меня все поломалось
Не выполнял п.2?
источник

L

Lupusregina[beta] in Svelte [svelt]
Pavel 🦇 Malyshev
Не выполнял п.2?
скорей всего нет
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Или забыл п.3
источник

L

Lupusregina[beta] in Svelte [svelt]
при имутабельности a = a не сработает?
источник

L

Lupusregina[beta] in Svelte [svelt]
если а объект
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Если ссылка на объект не поменялась (см.п.3), то значит не выполнился п.2
источник

G

GNU/Vsevolod in Svelte [svelt]
На самом деле для стора используется не ===, а вот эта ф-ция https://github.com/sveltejs/svelte/blob/master/src/runtime/internal/utils.ts#L39
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
GNU/Vsevolod
На самом деле для стора используется не ===, а вот эта ф-ция https://github.com/sveltejs/svelte/blob/master/src/runtime/internal/utils.ts#L39
Оно везде используется
источник

L

Lupusregina[beta] in Svelte [svelt]
Pavel 🦇 Malyshev
Если ссылка на объект не поменялась (см.п.3), то значит не выполнился п.2
ну и зачем тогда это надо. Я например меняю в объекте свойства, потом делаю a=a и у меня все обновляется
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Но стор обновляет дом и связанные $: через механизм локального стейта
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Lupusregina[beta]
ну и зачем тогда это надо. Я например меняю в объекте свойства, потом делаю a=a и у меня все обновляется
Потому что это путает
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Собственно прочитай весь тред, с этого началось
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Misha Zamkevich
На память

Дополню про не очевидную реактивность.

Повторное присвоение строки не реактивно:

$: console.log($store)
$store = 1      →    1
$store = 1      →

Повторное присвоение объектов, массивов и функций — реактивно:

$: console.log($store)
$store = [1]      →    Array(1)[ 1 ]
$store = [1]      →    Array(1)[ 1 ]
Тут
источник

L

Lupusregina[beta] in Svelte [svelt]
Misha Zamkevich
На память

Дополню про не очевидную реактивность.

Повторное присвоение строки не реактивно:

$: console.log($store)
$store = 1      →    1
$store = 1      →

Повторное присвоение объектов, массивов и функций — реактивно:

$: console.log($store)
$store = [1]      →    Array(1)[ 1 ]
$store = [1]      →    Array(1)[ 1 ]
это я знаю
источник

L

Lupusregina[beta] in Svelte [svelt]
и это логично же, реактивность для принудительного обновления скалярных значений бесмыслленна
источник