是否可以在同一个.jsx页面中使用setReduxObject和selectReduxObject?

ebdffaop  于 2022-12-13  发布在  其他
关注(0)|答案(1)|浏览(66)

我正在学习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;
cdmah0mi

cdmah0mi1#

这只是默认的方法,没什么好担心的。
一旦您在另一个组件中以同样的方式使用getCategoriesAndDocuments,最好将其移到异步操作创建器。
甚至可以为这个组件做这件事来改善关注点的分离。组件不一定需要涉及到firebase,它的工作是显示逻辑。数据来自firebase还是localStorage或者一些graphQL服务器应该没有关系。

相关问题