我为音乐/艺术家创建了一个反应项目。
我正在使用 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;
我可以成功地从艺术家上下文对象中获取数据,也可以执行 de addArtists 方法,但是我传递给函数的艺术家没有保存,变量仍然返回默认值。
我在组件中的用法:
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 方法中登录,我可以看到艺术家对象是有效的,但是如果我再次登录艺术家数组,它具有初始值。
我尝试了不同的方法和语法,例如带状态的类组件、带 useState 的功能组件……所以我猜我的语法是正确的,但我缺少一些关于 React 的关键概念。这是我第一个使用 React 的项目,所以我可能遗漏了一些东西,但即使在阅读了上下文文档之后我也无法弄清楚。