стэйт-менеджер возвращает новый стейт (что логично), но у меня отображение некоторого интерфейса завязано на взаимодействии с существующим стейтом, и таким образом при обновлении стейта после диспатча, у меня слетает отображение интерфейса, связанное со стейтом, так как старый стейт исчезает и появляется новый. Вопрос в том, можно ли как-то сделать так, чтобы при диспатче происходила мутабельность стейта, а не полное его обновление или каким-то ещё образом порешать эту проблему?
по моему ты что-то не так делаешь, потому что если ты стейт через спред перезаписываешь со значением уже новым, то у тебя это место не должно изменится, так как рефы на данные остались старые, добавилось только новое поле
Ну смотри, у меня в стейте есть некоторый список, на который ссылается один компонент при отображении интерфейса. А в другом компоненте я делаю диспатч, который также взаимодействует с этим списком и изменяет там некоторые данные (с отображением интерфейса в первом компоненте эти данные не связаны), при этом он возвращает новый список, так как useReducer иммутабельный
либо хранить в компоненте в каком-то стейте значение и перезаписывать его только когда у тебя данные старые и те что пришли со стора отличаются, либо попробовать как-то замемоизировать значение. На крайняк можно стор еще один создать или продублировать значение в сторе. Все равно не совсем понимаю как так получается.
Обсуждают сегодня