编辑:已解决!请看下文。
我希望我的组件在每次浏览器请求其 URL 时Blog触发动作创建者,无论是通过链接还是刷新。fetchBlog我想用 React useEffectHook 和 React-ReduxuseDispatch和useSelectorHooks 来做。但是,我的操作仅在点击页面链接时触发;我不明白为什么,即使在阅读了几个解释(如官方文档)之后。
这是代码:
// Everything duly imported, or else VSC would yell at me
export default function Blog() {
const dispatch = useDispatch();
// slug is set here with useSelector, this always works
useEffect(() => {
dispatch(fetchBlog(slug))
}, [slug, dispatch]);
const blog = useSelector((state) => state.blogs[0]);
// return renders the blog information from the blog constant
// since the action does not fire, blog is undefined because state.blogs is an empty array
}
我知道,刷新时fetchBlog不会因为 Redux DevTools 而触发,也因为我在debugger那里放了一个。(并且后端日志没有显示进来的请求。)动作创建者本身和reducer 必须在工作;如果不是,则通过链接访问该页面时将无法正确加载。
编辑:我已经确定useSelector并且useDispatch不是问题的根本原因,因为更改要使用的代码connect并mapStateToProps给出mapDispatchToProps相同的结果。问题似乎与useEffect.
慕码人2483693
慕森卡
慕尼黑5688855
相关分类