我有点想重新发布我早些时候发布的问题,因为我认为我问得不好!
所以我正在使用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>