我正在学习Redux,我已经偏离了教师的代码。我试图将我的代码从上下文和状态转换到Redux。
是否建议在同一个.jsx页面中使用setReduxObject(在我的代码中为setCategoriesMap
)和selectReduxObject(在我的代码中为selectCategoriesMap
)?是否有任何问题?
谢谢你!
我的代码:
import { useEffect } from "react";
import { useDispatch, useSelector } from "react-redux";
import { getCategoriesAndDocuments } from "../../utils/firebase/firebase.utils";
import { setCategoriesMap } from "../../store/categories/categories.action";
import { selectCategoriesMap } from "../../store/categories/categories.selector";
import Category from "../../components/category/category.component";
const Shop = () => {
const dispatch = useDispatch();
useEffect(() => {
const getCategoriesMap = async () => {
const categories = await getCategoriesAndDocuments();
dispatch(setCategoriesMap(categories));
};
getCategoriesMap();
}, []);
const categoriesMap = useSelector(selectCategoriesMap);
return (
<div>
{Object.keys(categoriesMap).map((key) => {
const products = categoriesMap[key];
return <Category key={key} title={key} products={products} />;
})}
</div>
);
};
export default Shop;
1条答案
按热度按时间cdmah0mi1#
这只是默认的方法,没什么好担心的。
一旦您在另一个组件中以同样的方式使用
getCategoriesAndDocuments
,最好将其移到异步操作创建器。甚至可以为这个组件做这件事来改善关注点的分离。组件不一定需要涉及到firebase,它的工作是显示逻辑。数据来自firebase还是localStorage或者一些graphQL服务器应该没有关系。