Объединение массивов в массиве.объекты данных возвращают прокси-серверы

#javascript #alpine.js

Вопрос:

Я работаю с Alpine.data глобальным и хочу объединить массивы, когда loadJobs сработает мой метод. Я не знаком с прокси в JS, и я действительно не понимаю, почему мое data свойство возвращает прокси-объект вместо простого массива.

Вот фрагмент кода, с которым я работаю :

 jobState = {
    low: 5,
    high: 10,
    isLoaded: false
}

document.addEventListener("alpine:init", () => {
    Alpine.data("loadMoreJobs", () => ({
        data: [],
        loadJobs() {
            // Update jobState
            jobState.low = jobState.high
            jobState.high  = 5
            const requestParams = {
                dataType: 'json',
                method: 'GET'
            }
            fetch(`http://127.0.0.1:3000/jobs/list/${jobState.low}/${jobState.high}`, requestParams)
                .then((data) => {
                    return data.json()
                })
                .then((data) => {
                    this.data = [...this.data, data]
                })
        }
    }))
})
 

Комментарии:

1. Не думаю, что ты когда-нибудь докопаешься до сути этого? В данный момент я сам с этим борюсь!!

2. Я нашел обходной путь с помощью какого-то довольно грязного трюка, но он работает : // I have the data variable containing JSON back from the API call this.data = JSON.parse(JSON.stringify(this.data)); data = JSON.parse(JSON.stringify(data)); this.data = this.data.concat(data);

3. Я изначально спросил, потому что, похоже, ваша проблема была связана с моей. После более тщательного расследования я не думаю, что это так. Тот факт, что данные (ваш массив) заключены в a Proxy() , ни в малейшей степени не имеет значения-вы все равно можете рассматривать их как массив. Если вы не можете, то, вероятно, в коде есть более фундаментальная проблема (усугубляемая тем фактом, что вы используете имя data как в качестве аргумента, так и в качестве переменной класса!!). Я также обнаружил во время своих путешествий, что parse(stringify(data)) решение-это просто способ замазать трещины бумагой. Скорее всего, в вашем коде есть более фундаментальная ошибка.

4. Спасибо за ваш ответ, я читал, что это действительно не должно было иметь значения. Я изменил имена переменных, чтобы прояснить это в примере, но в моем коде они так не называются, поэтому я предполагаю, что где-то есть еще одна ошибка, на которую вы указываете. Может быть, вам следует добавить свой комментарий в качестве ответа на мой вопрос, чтобы я мог его принять ?