我想在组件在“ if else”语句中呈现“ else”之前更新状态

时间:2020-10-03 18:23:45

标签: javascript reactjs axios react-hooks setstate

我有点想重新发布我早些时候发布的问题,因为我认为我问得不好!

所以我正在使用axios向json服务器api发出HTTP请求。所有这些请求都放在一个名为“ persons.js”的文件中。

b

并且我具有此功能-在每次用户添加或更新某人的电话时-都有一个名为“ PersonNotification”的组件,该组件呈现一个import axios from "axios"; const URL = "http://localhost:3001/persons"; const getPersons = () => { return axios.get(URL).then((res) => res.data); }; const addPerson = (person) => axios.post(URL, person); // this is where i have the probelm (i think) const updatePerson = (person, number, setErrMsg) => { axios .put(`${URL}/${person[0].id}`, { name: person[0].name, number, }) //i wanted the change the state of the App.js from this line after there is an error .catch((err) => setErrMsg("err")); }; const deletePerson = (person) => axios.delete(`${URL}/${person.id}`); export { getPersons, addPerson, deletePerson, updatePerson }; 元素,表示“电话已添加”或“已更新” 。 但是如果要删除的电话-用户想要更新的电话-被删除,我想再有一个“通知”,说“此电话不复存在”

这是h1组件

PersonNotification

现在;我这样做的方式(呈现用户已删除的错误消息)是当用户尝试更新不存在的电话时控制台中出现的promise错误

import React from "react"; import "./PersonNotification.css"; const PersonNotification = ({ notification, errMsg }) => { if (errMsg.length > 0) { return <h1 className="err">{notification}</h1>; } if (notification.length === 0) { return <></>; } else { return <h1 className="notification">{notification}</h1>; } }; export default PersonNotification; 文件中的函数updatePerson

persons.js

有第三个参数,我称为“ setErrMsg”,当发生错误(电话不再存在)时,这将设置App.js文件中的状态const updatePerson = (person, number, setErrMsg) => { axios .put(`${URL}/${person[0].id}`, { name: person[0].name, number, }).catch((err) => setErrMsg("err")); };

但是问题是我的这个“ setErrMsg”迟迟无法使用(我用react dev工具检查了它)。

这是(一些)App.js代码

ErrMsg

我想知道为什么“ setErrMsg”会被延迟出局!还有什么更好的方式来显示“电话已不存在”的通知? < / em>

0 个答案:

没有答案