него есть стейт, в нём есть 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])) ?
Обсуждают сегодня