javascript - 如何在 React POST 后触发 GET,以便在不重新加载页面的情况下显示新项目
问题描述
我有App
显示项目列表的组件,ModalForm
您可以在其中添加新项目。但是当我添加新项目时,我必须重新加载页面才能在我的列表中看到它。我想GET
在执行我的方法后以某种方式触发我的POST
方法。
**App.js**
const App = () => {
let books = useAxiosGet(API_URL)
//some code
return (
//some code
<ModalForm />
);
}
**ModalForm.js**
const ModalForm = () = > {
//some logic for opening modal form
function submit(e) {
e.preventDefault();
axios.post(API_URL, {
name: data.name,
description: data.description,
count: data.count,
imageURL: data.imageURL,
price: data.price
})
.then(res => {
// document.location.reload();
// here I want to trigger GET
console.log(res.data);
})
.catch((err) => {
console.log(err);
})
setData({
name: "",
description: "",
count: "",
imageURL: "",
price: ""
})
}
function handle(e){
const newData={...data}
newData[e.target.id] = e.target.value
setData(newData)
console.log(newData)
}
return (//some code);
}
解决方案
你应该使用 React State 来存储你的书。
https://ar.reactjs.org/docs/state-and-lifecycle.html
为书籍创建一个状态
const App = () => { // Books storage. const [books, setBooks] = useState([]); }
制作一个加载书籍的功能。
const App = () => { // Books storage. const [books, setBooks] = useState([]); // Load books const loadBooks = () => { const response = useAxiosGet(API_URL); setBooks(response ); } }
当组件堆使用
useEffect
钩子时加载书籍。 https://ar.reactjs.org/docs/hooks-effect.htmlconst App = () => { // Books storage. const [books, setBooks] = useState([]); // Load books const loadBooks = () => { const response = useAxiosGet(API_URL); setBooks(response ); } // Load books when component mount. useEffect(loadBooks, []) }
在您的提交函数中,提交成功后,您可以
loadBooks
再次调用。const submit = () => { ... .then(() => { loadBooks(); }) }
推荐阅读
- jquery - 水平滚动菜单以 wordpress 中的活动项目为中心
- azure - Azure 媒体服务中的访问控制
- javascript - 地图内的 SetState
- reactjs - 寻求一个 react-plotly.js 事件处理程序示例
- podman - podman 尝试拉取,即使之前拉取了图像
- pandas - 使用条件更改数据框中的值
- sql - 使用 WITH 语句中断的 UNION ALL 查询
- mysql - 我的 LAG 函数没有按预期工作 MySQL 8.x
- linux - 通过 Prometheus Alertmanager 在手机上发送 SMS 警报消息
- java - 如何递归调用 Java 函数并获取派生类的版本(antlr 4 walker)