【发布时间】:2023-04-04 05:41:01
【问题描述】:
我最近开始学习 Redux,有些事情困扰着我。
import React, { useEffect } from "react";
import { connect, useDispatch } from "react-redux";
import Modal from "../Modal/Modal";
import history from "../../utils/history";
import { fetchPost } from "../../actions";
const PostDelete = ({ match, post }) => {
const postId = match.params?.id;
const dispatch = useDispatch();
useEffect(() => {
dispatch(fetchPost(postId));
}, [dispatch]);
return (
<Modal
/>
);
};
const mapStateToProps = (state, { match }) => {
console.log("MSTP", state.posts[match.params?.id]) // <== CONSOLED TWICE !!
return { post: state.posts[match.params?.id] };
};
export default connect(mapStateToProps, {})(PostDelete);
根据我的理解,当我使用 react-router 导航到这里时:
- 应首先调用 MSTP(从商店获取帖子)
- 然后 useEffect() 获取帖子(以防万一用户直接打开此页面)
- 它调度改变状态的动作
- 这会再次重新呈现 MSTP
有没有办法解决这个问题?这是一种不好的方法还是我在这里遗漏了什么?
【问题讨论】:
标签: javascript node.js reactjs redux