我试图用Redux获取'all post'。我应该得到一个空数组,但却得到了一个未定义的数组。下面是我的reducer:
export default (posts = [], action) => {
switch ((action.type)) {
case "FETCH_ALL":
return action.payload;
case "CREATE":
return posts;
default:
return posts;
}
};
动作
export const getPosts = () => async (dispatch) => {
try {
const { data } = await api.fetchPosts();
dispatch({ type: "FETCH_ALL", payload: data });
} catch (error) {
console.log(error.message)
}
};
Posts.js组件
import { useSelector } from "react-redux";
import Post from "./Post/Post";
import useStyles from "./styles";
const Posts = () => {
const posts = useSelector((state)=>state.posts)
console.log(posts)
const classes = useStyles();
return (
<>
<h1>Posts</h1>
<Post />
</>
);
};
export default Posts;
3条答案
按热度按时间xeufq47z1#
根据您的reducer,您的整个状态是一个posts数组,而不是像{ posts:[ ] }。因此,在选择器中,您可以简单地返回Posts组件中的状态。
ki0zmccv2#
我相信你需要修改你的reducer文件中的一行。你需要把action.payload分配给post,然后你就可以访问它了
vyu0f0g13#
1.首先,
switch ((action.type))
应该是switch (action.type)
1.然后,您应该检查来自api的
data
是否正确返回1.最后,检查redux状态对象和
posts
选择器