Реагируйте на контекст, не сохраняя обновления - PullRequest
0 голосов
/ 31 января 2020

Я создал проект реагирования для музыки / исполнителей.

Я использую контекст React для доступа к данным исполнителей по компонентам:

import React, { createContext, useState } from "react";

export const ArtistContext = createContext(null);

const ArtistContextProvider = props => {
    const [artists, setArtists] = useState([]);

    const addArtist = new_artist => {
        setArtists([...artists, new_artist])
    };

    return (
        <ArtistContext.Provider value={{artists, addArtist}}>
            {props.children}
        </ArtistContext.Provider>
    );
};

export default ArtistContextProvider;

Я могу успешно получить данные из объект контекста Artist, а также выполнить методы de addArtists, но художник, который я передаю функции, не сохраняется, а переменная stills возвращает значение по умолчанию.

Мое использование в компоненте:

const { artists, addArtist } = useContext(ArtistContext);

useIonViewWillEnter(() => {
    api.get('artists?manager=1'))
    .then(function(response) {
        artist = response.data.items[0];
        addArtist(artist);
        window.location.href = '/artist/' + artist.id + '/tabs';
    })
    .catch(error => console.log(error));
});

Если я захожу в метод addArtist, я вижу, что объект Artist действителен, но затем, если я снова захожу в массив массив художников, он имеет начальное значение.

Я пробовал разные методы и синтаксис, как класс Компоненты с состоянием, функциональные компоненты с useState ... Так что я предполагаю, что мой синтаксис правильный, но мне не хватает некоторого ключевого понятия о React. Это мой первый проект с React, так что я, возможно, что-то упустил, но не могу понять это даже после прочтения контекстной документации.

...