него есть стейт, в нём есть foo: []
                      
                      
                      Инициализирую его экшном который загружает по сети объект и вызывает мутацию, в мутации я замораживаю этот объект и добавляю его в  foo через присваивание нового массива через деструктуризацию
                      
                      
                      Так вот, для последующих добавлений объектов всё работает как и задумано, а вот первый добавленный в массив объект всегда реактивный, почему так? Использую ssr
                      
                      
                    
стейт делается реактивным при инициализации
я понимаю, но у меня ведь вызов экшена асинхронный, мутация происходит после инициализации
Возможно дело в деструкткризации
Так она вроде тут ни при чём, я же на изначальной мутации замораживаю первый объект
playground бы по идее setTimeout(() => (item.someField = "new value"), 1000); const newFoo = [...state.items, Object.freeze(item)]; state.foo = newFoo; Vuex все равно обработает изменение someField
где сделать (плейграунд)?
stackblitz, codesandbox
Соответственно вот этот пример там попробуйте Убедитесь, что ваш изначальный тезис верен
Какая-то странная штука всё равно :) А пробовал state.foo = Object.freeze(state.foo.concat([item])) ?
Обсуждают сегодня