Redux Инструментарий и Axios - PullRequest
3 голосов
/ 14 февраля 2020

Я использую Redux Toolkit для подключения к API с Ax ios. Я использую следующий код:

const products = createSlice({
    name: "products",
    initialState: {
        products[]
    },
    reducers: {
        reducer2: state => {
            axios
                .get('myurl')
                .then(response => {
                    //console.log(response.data.products);
                    state.products.concat(response.data.products);
            })

        }
    }
});

ax ios подключается к API, потому что закомментированная строка для вывода на консоль показывает мне данные. Тем не менее, state.products.concat (response.data.products); выдает следующую ошибку:

TypeError: Невозможно выполнить 'get' для отозванного прокси

Есть ли способ исправить эту проблему?

1 Ответ

3 голосов
/ 14 февраля 2020

Это происходит потому, что ваша функция-редуктор не является чистой функцией, она не должна иметь никаких асинхронных вызовов.

что-то подобное должно работать. это исправит ошибку, которую вы получаете

const products = createSlice({
    name: "products",
    initialState: {
        products: []
    },
    reducers: {
        reducer2: (state, { payload }) => {
                return { products: [...state.products, ...payload]}
         })

      }
    }
});

, и api должен вызываться снаружи

const fetchProducts = () => {

   axios.get('myurl')
     .then(response => {
        //console.log(response.data.products);
        store.dispatch(products.actions.reducer2(response.data.products))
   })
};

PS: не пытался запустить вышеуказанный код, возможно, вам придется внести изменения в соответствии с ваша потребность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...