@ivankirshin

Как правильно работать со vuex?

Сегодня осознал, что я дурачок, который уже какое-то время работает со вьюксом и не знал, что объект полученный через геттер можно изменять напрямую. Получается, что я зачастую делал коммит, хотя данные уже были изменены.
Как я понял, это нежелательно. Прочитал, что нужно включить стрит режим.
Теперь такой код вызывает ошибку. Как видно, раньше я не знал, что puzzles и так меняется после сорт. Теперь вопрос в другом. Как правильно поступать. Если объекты и массивы передаются по ссылке? делать еще одну операцию по копированию?
shuffle({commit,getters}){
        let puzzles = getters.getPuzzles
        puzzles.sort((a,b) => Math.random() - 0.5)
        commit('createPuzzles',puzzles)
        commit('resetCounter')
        commit('changeResult', false)
      }
  • Вопрос задан
  • 154 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
Теперь вопрос в другом. Как правильно поступать. Если объекты и массивы передаются по ссылке? делать еще одну операцию по копированию?

Да. Вместо

let puzzles = getters.getPuzzles

делайте

let puzzles = [...getters.getPuzzles]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы