alex
alex

Reputation: 7601

How to clone a Vuex array?

I have a Vuex array (this.buildings). I can't mutate it directly before turning it into a payload for an api, so I tried to clone it with slice():

const buildingsPayload = this.buildings.slice() 
  buildingsPayload.forEach((building, index) => {
  building.index = index
})

However I'm still getting the Do not mutate vuex store state outside mutation handlers. error.

What's the correct way of doing this?

Upvotes: 5

Views: 2483

Answers (1)

Evan Trimboli
Evan Trimboli

Reputation: 30082

Try something like this:

const buildingsPayload = this.buildings.map((b, idx) => Object.assign({ index: idx }, b));

It will also copy the objects, so you're not modifying the state of those.

Upvotes: 9

Related Questions