我试图删除特定id的帖子,但它给我错误为:代理错误:无法代理请求 /api/posts从localhost:3001http://localhost:8000。有关更多信息,请参阅https://nodejs.org/api/errors.html#errors_common_system_errors(ECONNREFUSED)。
这是我的行动:
export const deletePost = (id) => async (dispatch) => {
try {
dispatch({
type: DELETE_POST_LOADING,
});
const res = await axios.delete(`/api/post/${id}`);
dispatch({
type: DELETE_POST_SUCCESS,
payload: { id: id },
});
} catch (error) {
dispatch({
type: DELETE_POST_FAIL,
payload: error,
});
}
};
这是我的减速机:
case DELETE_POST_SUCCESS:
const new_data = state.posts;
const item_index = new_data.findIndex(
(element) => element.id === action.payload.id
);
new_data.splice(item_index, 1);
return {
loading: false,
posts: new_data,
};
这是我的组件中使用的代码:
const handleDelete = (id) => {
setItemId(id);
id && itemId != null && dispatch(deletePost(itemId));
};
这是我的post控制器,它也没有获取id的数据
const getSinglePost = async (req, res) => {
const _id = req.params;
console.log(id);
const article = await Post.findById({ _id });
res.json(article);
if (article) {
console.log("Fetched data with id");
} else {
console.log("Didnot fetched");
}
};
用户界面代码
import React, { useState, useEffect } from "react";
import { withStyles, makeStyles } from "@material-ui/core/styles";
import Table from "@material-ui/core/Table";
import TableBody from "@material-ui/core/TableBody";
import TableCell from "@material-ui/core/TableCell";
import TableContainer from "@material-ui/core/TableContainer";
import TableHead from "@material-ui/core/TableHead";
import TableRow from "@material-ui/core/TableRow";
import Paper from "@material-ui/core/Paper";
import { useDispatch, useSelector } from "react-redux";
import { getPost, deletePost } from "../../actions/postAction";
import VisibilityIcon from "@material-ui/icons/Visibility";
import EditIcon from "@material-ui/icons/Edit";
import DeleteIcon from "@material-ui/icons/Delete";
import "./Dashboard.css";
import { useHistory } from "react-router";
import { Button } from "@material-ui/core";
const StyledTableCell = withStyles((theme) => ({
head: {
backgroundColor: theme.palette.common.black,
color: theme.palette.common.white,
},
body: {
fontSize: 14,
},
}))(TableCell);
const StyledTableRow = withStyles((theme) => ({
root: {
"&:nth-of-type(odd)": {
backgroundColor: theme.palette.action.hover,
},
},
}))(TableRow);
const useStyles = makeStyles({
table: {
minWidth: 700,
},
});
export default function CustomizedTables() {
const classes = useStyles();
const [articles, setArticles] = useState([]);
const [itemId, setItemId] = useState("");
const dispatch = useDispatch();
const articleState = useSelector((state) => state.post_Reducer);
useEffect(() => {
dispatch(getPost());
}, []);
useEffect(() => {
const data = articleState.posts;
console.log("aayo", data);
setArticles(data);
}, [articleState]);
const history = useHistory();
const logout = () => {
localStorage.removeItem("userInfo");
history.push("/");
};
function passID(id) {
console.log("itemid", id);
history.push({
pathname: `/article/${id}`,
});
}
const handleDelete = (id) => {
dispatch(deletePost(id));
};
return (
<>
<div className="navigationButtons">
<Button variant="contained" color="secondary" onClick={logout}>
Logout
</Button>
<Button variant="contained" onClick={() => history.push("/createpost")}>
Create New Article
</Button>
</div>
<TableContainer component={Paper}>
<Table className={classes.table} aria-label="customized table">
<TableHead>
<TableRow>
<StyledTableCell
style={{ width: "150px" }}
className="tableRow"
align="left"
>
ID
</StyledTableCell>
<StyledTableCell className="tableRow" align="left">
Title
</StyledTableCell>
<StyledTableCell className="actionRow" align="center">
Action
</StyledTableCell>
</TableRow>
</TableHead>
<TableBody>
{articles?.map((article) => (
<StyledTableRow key={article._id}>
<StyledTableCell
className="dataRow"
align="left"
component="th"
scope="row"
>
{article._id}
</StyledTableCell>
<StyledTableCell className="dataRow" align="left">
{article.title}
</StyledTableCell>
<StyledTableCell className="actionRow" align="center">
<td className="actions">
<VisibilityIcon
onClick={() => passID(article._id)}
style={{ color: "green", fontSize: "20px" }}
/>
<EditIcon style={{ color: "blue", fontSize: "20px" }} />
<DeleteIcon
onClick={() => {
handleDelete(article._id);
}}
style={{ color: "red", fontSize: "20px" }}
/>
</td>
</StyledTableCell>
</StyledTableRow>
))}
</TableBody>
</Table>
</TableContainer>
</>
);
}
有人能帮我吗?
您需要刷新页面/重新加载应用程序的原因是由于减速器中的状态突变。
case DELETE_POST_SUCCESS:
const new_data = state.posts; // <-- new_data is reference to state
const item_index = new_data.findIndex(
(element) => element.id === action.payload.id
);
new_data.splice(item_index, 1); // array.splice mutates array in place
return {
loading: false,
posts: new_data, // <-- save posts state reference back into state
};
在React中更新状态时,必须始终返回新的引用对象,在本例中为数组。只需过滤posts数组。不要忘记也浅复制现有状态,除非您特别删除部分状态。
case DELETE_POST_SUCCESS:
return {
...state
loading: false,
posts: state.posts.filter((element) => element.id !== action.payload.id),
};
Can u try like this
const getSinglePost = async (req, res) => {
const id = req.params.id;
console.log(id);
const article = await Post.findById({_id:id});
res.json(article);
if (article) {`enter code here`
console.log("Fetched data with id");
} else {
console.log("Didnot fetched");
}
};
我试图删除使用它的ID的消息。我在用discord.py. 逻辑流 用户发送命令。消息hi Bot删除"!消息hi"使用用户的消息ID 机器人说hi" 我已经想出了如何让它复制我的消息,但我很难让它删除它们。我不想说它在邮件被删除之前就删除了它,否则在繁忙的服务器上它可能无法工作。我想获取命令消息的ID,然后使用它的ID删除它。
我正在尝试删除右边的最后一个边框,如下图所示。我该怎么处理这个? 我的代码: null null
创建帖子时,我的用户会提供一个外部链接。如果删除了外部链接,本地帖子也应该删除。为了实现这一点,我尝试运行以下代码... ...但是我得到了这些错误... 警告:get_headers(): php_network_getaddresses: getaddrinfo failed: name or service in /home/cornwal2/public_html/listings/wp-
我有一个包含许多列和观察值的数据帧(et5)。其中一列是“MRN”,这是数据框中每个观察/患者的唯一代码,另一列是“年龄”。首先,如何将所有MRN和年龄并排显示?第二,我如何通过MRN删除特定观察/患者。 我的数据框(et5)是什么样子的
问题内容: 我想做的只是删除我在日历中保存的内容,而不是删除日历中已经存在的所有内容。为此,我使用以下代码。但是它将删除日历的所有内容。那么谁能告诉我如何预防呢? 因此,我要删除的仅是我输入的条目。 删除活动 问题答案: 从日历中读取数据后,只需尝试一下即可。 向日历添加单次事件 要将条目添加到特定日历,我们需要配置一个日历条目以使用ContentValues进行插入,如下所示: 每个事件都需要绑
问题内容: 我想删除多条线图中的特定线。贝娄是一个给我的例子,这对我来说还不够,因为它仅删除最后绘制的线条,而不删除我要删除的线条。我怎样才能做到这一点?如何在整个程序中寻址特定行(按名称,编号,参考)并删除该行? 问题答案: 几乎所有的绘图功能都返回对先前创建的对象的引用: 如果您有参考文献,则可以通过 (doc)函数ex删除艺术家: