Reactjs 反应上下文不保存更新

Reactjs 反应上下文不保存更新,reactjs,ionic4,react-context,react-functional-component,Reactjs,Ionic4,React Context,React Functional Component,我为音乐/艺术家创建了一个react项目 我使用React上下文跨组件访问艺术家数据: import React, { createContext, useState } from "react"; export const ArtistContext = createContext(null); const ArtistContextProvider = props => { const [artists, setArtists] = useState([]); c

我为音乐/艺术家创建了一个react项目

我使用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;
如果我在addArtister方法中登录,我可以看到Artister对象是有效的,但是如果我再次登录Artisters数组,它具有初始值

我尝试过不同的方法和语法,比如带有state的类组件、带有useState的函数组件。。。所以我猜我的语法是正确的,但是我缺少了一些关于React的关键概念。
这是我使用React的第一个项目,因此我可能遗漏了一些内容,但即使在阅读了上下文文档之后,我也无法找到它。

您需要将状态/上下文对象存储到本地存储、会话存储、cookie或服务器,因为访问不同的url路径会刷新页面

此链接可帮助您在刷新页面时存储状态。

今天刚遇到这个。我花了2天时间来解决这个lol

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));
});