Javascript React上下文:从API获取数据,并在React组件中发生某些事件时调用API
我是新来的。 我需要在react上下文中调用API,以便在整个react应用程序中使用其数据。此外,还需要在react应用程序的各个组件上的某些CRUD操作上调用相同的API 目前,我正在redux中存储API数据,我不想存储这些数据 这是我试过的 context.js文件Javascript React上下文:从API获取数据,并在React组件中发生某些事件时调用API,javascript,reactjs,react-hooks,react-context,Javascript,Reactjs,React Hooks,React Context,我是新来的。 我需要在react上下文中调用API,以便在整个react应用程序中使用其数据。此外,还需要在react应用程序的各个组件上的某些CRUD操作上调用相同的API 目前,我正在redux中存储API数据,我不想存储这些数据 这是我试过的 context.js文件 import React,{useState,createContext,useffect}来自'React'; 从“/actionMethods”导入{getData}; const NewContext=createC
import React,{useState,createContext,useffect}来自'React';
从“/actionMethods”导入{getData};
const NewContext=createContext();
函数newContextProvider(道具){
useffect(异步()=>{
const{dataValue}=await getData()
console.log(“数据”,数据值)
}, [])
返回(
{props.children}
);
}
const newContextConsumer=newContext.Consumer;
导出{newContextProvider、newContextConsumer、newGridContext}代码>首先,我们创建上下文并向其传递初始值
为了获取数据并跟踪返回值,我们在组件内部创建一个状态。此组件将管理获取的数据并将其传递到上下文提供程序中
要在useffect
中调用异步函数,我们需要将其包装并在useffect
回调中调用它
export const NewContext = createContext({
my_data: {} // Initial value
});
export const NewContextProvider = props => {
const [my_data, setMyData] = useState({});
useEffect(() => {
const fetchMyData = async () => {
const { dataValue } = await getData();
if (dataValue) {
setMyData(dataValue);
} else {
// There was an error fetching the data
}
};
fetchMyData();
}, []);
return (
<NewContext.Provider
value={{
my_data
}}
>
{props.children}
</NewContext.Provider>
);
};
如果有什么不清楚的地方,请告诉我。非常感谢您抽出时间。当我控制台my_data
时,它表示未定义。API的调用非常完美。@XperiaReno一点问题都没有!看起来数据没有从getData
正确返回。我只是从问题中复制了这个,但是让我们看看它得到了什么。你能准确记录它返回的内容吗?为此更改useffect中的行:const dataValue=await getData();console.log(数据值)代码>是。我得到了数据。。原因是我们把const{dataValue}
放在了一起。相反,我们必须放入常量数据值
。最后一个问题。当我在执行CRUD操作后在其他组件中使用此上下文并获取更新的数据时。我该怎么做??比如action.someMethod调用函数,在函数内部,API将被自动调用并存储数据?很好,你可以解决它。我不是在听你的问题,你所说的action.someMethod
是什么意思?如果您询问使用上下文的组件(例如上面的MyComponent
)是否会在上下文数据更改后重新呈现,答案是肯定的,它将在上下文提供程序中传递的值每次更改时重新呈现。是。。所以我的意思是。我在myComponent中执行了名为“删除列表”的操作。因此,在执行操作并从deleteapi获得响应后,我将获得更新的列表。因此,要调用调用API以获取更新列表的函数,我应该在delete API调用成功后编写哪些代码,这些代码将调用上下文中的函数,并调用API以获取更新列表。。
import React, { useContext } from "react";
import { NewContext } from "./NewContext"; // The file where the Context was created
export const MyComponent = props => {
const { my_data } = useContext(NewContext);
return //...
};