Промежуточное ПО Immer¶
Промежуточное ПО Immer позволяет использовать неизменяемое состояние более удобным способом. Кроме того, с помощью Immer можно упростить работу с неизменяемыми структурами данных в Zustand.
Установка¶
Чтобы использовать промежуточное ПО Immer в Zustand, вам нужно установить Immer как прямую зависимость.
1 |
|
Использование¶
(Обратите внимание на дополнительные круглые скобки после параметра type, как указано в Typescript Guide).
Обновление простых состояний
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
Обновление сложных состояний
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
|
Gotchas¶
В этом разделе вы найдете некоторые моменты, о которых следует помнить при использовании Zustand с Immer.
Мои подписки не вызываются¶
Если вы используете Immer, убедитесь, что вы действительно следуете правилам Immer.
Например, вы должны добавить [immerable] = true
, чтобы объекты классов работали. Если вы этого не сделаете, Immer все равно будет мутировать объект, но не как прокси, поэтому он также обновит текущее состояние. Zustand проверяет, действительно ли состояние изменилось, поэтому, поскольку и текущее состояние, и следующее состояние равны (если вы не сделаете это правильно), Zustand пропустит вызов подписки.
CodeSandbox Demo¶
Источник — https://docs.pmnd.rs/zustand/integrations/immer-middleware