【问题标题】:How to fix state change in VUEX?如何修复 VUEX 中的状态变化?
【发布时间】:2019-05-30 06:25:35
【问题描述】:

我在从另一个数组拼接元素然后状态改变时改变状态时遇到问题。明确一点,我不想改变状态,只想从数组arrayWithFilters = []拼接一个元素@

export const SHOW_RESULTS_WHEN_NOTHING = (state) => {
  let selectedFilters = {...state.selected.filters},
  arrayWithFilters = []; //Making splice from this array, but it also removes from state.selected.filters. 

  for (let filter in selectedFilters) {
    arrayWithFilters.push(selectedFilters[filter])
  }

  arrayWithFilters.forEach((filter) => {
    if (filter.values.includes('qcontrast')) {
      filter.values.splice('qcolor', 1);
      console.log(filter)
    }
  })
}

【问题讨论】:

  • arrayWithFilters 声明在哪里?即,let arrayWithFiltersvar arrayWithFilters 在哪里?
  • 您的问题是您只是在制作state.selected.filters 的浅表副本。每个filter 中的values 仍将引用相同的(数组)对象引用

标签: javascript vue.js vuejs2 vuex store


【解决方案1】:

下一个代码解决了问题

export const SHOW_RESULTS_WHEN_NOTHING = (state) => {
let selectedFilters = {...state.selected.filters},
    arrayWithFilters = [];

let selectedFiltersCopy = JSON.parse(JSON.stringify(selectedFilters));

arrayWithFilters = Object.values(selectedFiltersCopy);

arrayWithFilters.forEach((filter) => {

    if (filter.values.includes('qcontrast')) {

        filter.values.splice('qcontrast', 1);

    }
})

console.log(arrayWithFilters)

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-16
    • 2019-02-14
    • 2020-06-23
    • 2019-08-06
    • 2020-06-18
    • 2019-04-30
    • 2022-06-21
    • 2019-01-03
    相关资源
    最近更新 更多