Я пытаюсь как добавлять, так и удалять элементы в многомерном массиве, хранящемся во Vuex.
Массив - это группа категорий, и каждая категория имеет подкатегорию (бесконечность, а не просто двухмерный массив).
Пример набора данных выглядит примерно так:
[
{
id: 123,
name: 'technology',
parent_id: null,
children: [
id: 456,
name: 'languages',
parent_id: 123,
children: [
{
id:789,
name: 'javascript',
parent_id: 456
}, {
id:987,
name: 'php',
parent_id: 456
}
]
}, {
id: 333,
name: 'frameworks',
parent_id 123,
children: [
{
id:777,
name: 'quasar',
parent_id: 333
}
]
}
]
}
]
.... у меня вопрос, как мне лучше всего добавлять и удалять элементы в этот массив, который находится внутри Vuex Store?
Обычно я манипулирую простыми массивами внутри Vuex Store, используя Vue.Set (), чтобы получить реактивность. Однако, поскольку я не уверен, насколько глубоко вложенный массив, которым управляют, я просто не могу этого понять.
Вот пример того, как я думал, что могу добавить элемент подкатегории с помощью рекурсии:
export const append = (state, item) => {
if (item.parent_uid !== null) {
var categories = []
state.data.filter(function f (o) {
if (o.uid === item.parent_uid) {
console.log('found it')
o.push(item)
return o
}
if (o.children) {
return (o.children = o.children.filter(f)).length
}
})
} else {
state.data.push(item)
}
}