reactjs - 使用反应钩子重新加载组件
问题描述
我想问你修改表单数据后如何重新加载组件,然后我有我的组件:
export default function MyComponent() {
const url = "/api/1";
const [resData, setResData] = useState(null);
useEffect(() => {
const jwt = getJwt();
const fetchData = async () => {
const resP = await axios(url);
setResData(resP.data);
};
fetchData();
}, []);
return <EditComponent={resData} />
}
该组件将我的数据传递给“EditCompoent”子组件,其中有一个表单,其中填充了来自父组件的数据,我可以修改其中有一个保存按钮,当我单击该按钮时,我可以将修改后的数据发送到我的笨蛋:
const handleConfirm = () => {
axios.put(url, data).then((res) => {
//Reload Component
})
}
我希望能够在此工作成功后立即重新加载父组件我该怎么办?我不想重新加载整个页面我只想重新加载“MyComponent”的父组件,我希望我已经很好地提出了这个问题。
解决方案
我会将整个useEffect
回调传递下来,以便handleConfirm
可以在 之后再次调用它axios.put
,之后resData
父级中的状态将被更新:
export default function MyComponent() {
const url = "/api/1";
const [resData, setResData] = useState(null);
const tryLoginJWT = () => {
const jwt = getJwt();
const resP = await axios(url);
setResData(resP.data);
};
useEffect(tryLoginJWT, []);
return <EditComponent {...{ resData, tryLoginJWT }} />
}
const handleConfirm = () => {
axios.put(url, data)
.then(tryLoginJWT)
.catch(handleErrors); // don't forget to catch here in case there's a problem
}
推荐阅读
- php - 如何使用 php xmlreader 读取 xml 文件
- asp.net-mvc - 为什么 AnonymousObjectToHtmlAttributes 返回一个路由值字典
- c# - 从 API 方法返回 JSON
- vbscript - 文件上传后如何将文件名变量从子asp页面传递到父页面
- python - 具有时间序列日期的线性回归训练
- c# - 当属性对象被无根并标记为垃圾收集时?
- python - 为什么我收到错误“无法加载外部图块集”
- html - flexbox中的中心div
- kubernetes - 使用哨兵在 Kubernetes 上部署 redis
- xamarin.ios - 如何使用 Visual Studio 2019 在带有照片(或其他应用程序)的 iOS 设备上调试我的 Xamarin.ios 共享扩展?