VueJS: Могу ли я использовать splice / pu sh для вычисляемого массива? - PullRequest
0 голосов
/ 03 мая 2020

Мне просто интересно, смогу ли я программно изменить вычисляемый массив.
В моем случае я попытался соединить элемент в массив и поместить sh в другую позицию в массиве.
допустим ...

list_array = [{list_id: 1, status: 'good', data: {item_id: 1, event: 'jumping'}]

Мой код соединения и pu sh выглядит следующим образом ...

refreshList(event, api_data) {
    const remove_index = this.list_array.findIndex(list => list.list_id == event.list_id);
    const remove_data_index = this.list_array[remove_index].data.findIndex(data => data.item_id == event.item_id);

    this.list_array[remove_index].splice(remove_data_index, 1);

    const new_index = this.list_array.findIndex(list => list.list_id == api_data.list_id);
    if (new_index == -1) {
        this.list_array.push({
            list_id : api_data.list_id,
            status: api_data.status,
            data: api_data,
        })
    } else {
        this.list_array[new_index].data.push(api_data);
    }
}

Теперь этот код работает ... когда я смотрю на list_array в вычисленной консоли Vue. кажется, что сращивание и проталкивание работают ... но рендеринг данных, похоже, не меняется.

1 Ответ

0 голосов
/ 03 мая 2020

При использовании массивов или карт убедитесь, что они инициализированы в части данных вашего компонента, иначе они не будут реактивными.

У «вычисляемых» свойств есть методы get и set. Вы должны использовать метод set, чтобы изменить их.

...