【发布时间】:2019-11-23 10:26:36
【问题描述】:
我正在尝试在我的 React Native 应用程序中使用 React 上下文作为状态管理器。
这是上下文:
import React, { createContext, useState, useEffect } from "react";
import axios from "axios";
export const GlobalContext = createContext();
export const Provider = ({ children }) => {
const [tracksList, setTracksList] = useState([
{
track_list: []
}
]);
useEffect(() => {
axios
.get(
`https://cors-anywhere.herokuapp.com/https://api.musixmatch.com/ws/1.1/chart.tracks.get?page=1&page_size=10&country=us&f_has_lyrics=1&apikey=${
process.env.REACT_APP_MM_KEY
}`
)
.then(res => {
setTracksList([
{
track_list: res.data.message.body.track_list
}
]);
})
.catch(err => console.log(err));
}, []);
return (
<GlobalContext.Provider value={[tracksList, setTracksList]}>
{children}
</GlobalContext.Provider>
);
};
export const Consumer = GlobalContext.Consumer;
子组件。在这里,我想进行 API 调用以获取用户并将此用户字段设置为全局上下文。我可以从消费者那里获取上下文值,但是如何设置新的呢?
import React, { useContext } from "react";
import { GlobalContext } from "../../context/context";
const Demo = () => {
const contextValue = useContext(GlobalContext);
console.log(contextValue, "Context outside from JSX");
return <div>Content</div>;
};
export default Demo;
那么,是否可以从每个子组件中为 React 上下文添加新值,就像在 Redux 中一样?提前致谢!
【问题讨论】:
标签: javascript reactjs react-native axios react-context