Я создал проект реагирования для музыки / исполнителей.
Я использую контекст 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, так что я, возможно, что-то упустил, но не могу понять это даже после прочтения контекстной документации.