Vyhledávání v vuejs s počítačovou stav

0

Otázka

Mám komponentu, která činí údaje z obchodu v vuex

komponenta má vypočítaný stav, když se vyhledávací dotaz bylo napsáno, to bude filtrovat, které ukládají státu, který je kommunhanteringItems hledání zákazníka a tady mám problém, který je vypočítaný stav bude mutovat státu v obchodě, které jsem nechtějí to dělat.

Stát v obchodě, který je this.$store.state.todos.kommunhanteringItems:

kommunhanteringItems: [
  {
    gId: 1,
    gtitle: 'Group1',
    items: [
      {cid: 1, customer: 'Vicotria Nils'},
      {cid: 2, customer: 'Mona Andersson'}
    ]
  },
  {
    gId: 2,
    gtitle: 'Group2',
    items: [
      {cid: 3, customer: 'Jacob Ström'},
      {cid: 4, customer: 'Magdalin eriksson'}
    ]
  }
]

Součástí je počítačová:

SearchInTables() {
  let k = this.$store.state.todos.kommunhanteringItems
  if (this.SearchQuery != '') {
    let SearchFilter = []
    let self = this
    k.forEach(function (x) {
      let items = x.items
      let filter = items.filter((item) => {
        return item.customer.toUpperCase().includes(self.SearchQuery.toUpperCase())
      })
      x.items = filter
      SearchFilter.push(x)
    })
    return SearchFilter
  } else {
    return k
  }
},
javascript vue.js vuejs2
2021-11-23 16:06:57
1

Nejlepší odpověď

0

Problém je, že jsi psala x což je objekt v poli v obchodě, když můžete dělat x.items = filter.

Aby se tomu zabránilo, musíte vytvořit kopii x a nahradit items. Viz níže pro příklad, dělá to s Object.assign

SearchInTables() {
  let k = this.$store.state.todos.kommunhanteringItems
  if (this.SearchQuery != '') {
    let SearchFilter = []
    let self = this
    k.forEach(function (x) {
      let filter = x.items.filter((item) => {
        return item.customer.toUpperCase().includes(self.SearchQuery.toUpperCase())
      })
      SearchFilter.push(Object.assign({}, x, { items: filter })
    })
    return SearchFilter
  } else {
    return k
  }
}
2021-11-24 09:17:51

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................