【问题标题】:General question - when to use redux store?一般问题 - 何时使用 redux store?
【发布时间】:2020-11-30 16:06:49
【问题描述】:

我有一个一般性问题。我已经使用 React 几个月了,我第一次从 udemy.com 的综合课程中学到了它。该课程展示了如何在从 firebase 访问数据时使用操作和 reducer 来更新商店。我发现,在我有限的专业经验中,经常使用 firebase,但似乎没有使用 action 和 reducers。

更复杂的是,我已经学习了使用较新的 firestore 数据库的课程(通常同时使用钩子等),同时完全放弃了 redux。这样做的好处之一是可以看到数据库中记录的更改立即反映在屏幕上,而无需刷新页面。这些课程并不全面,因此没有深入了解所有细节。

长话短说……对于一个常规的 React 应用程序(例如,不是高事务性或数据量不重的应用程序),是否有最佳实践?似乎将 db 连接到 store,然后在我需要数据时访问 store 是有意义的,如果我要继续在该区域制作我的应用程序,我将继续使用 action 和 reducer。

【问题讨论】:

    标签: reactjs firebase firebase-realtime-database redux


    【解决方案1】:

    一个简单的场景是登录系统。

    假设您有一个 login.js 来验证您的用户,然后您会返回要在整个应用程序中使用的 displayName、photoURL、手机号码。

    如果没有一些 redux 或某种存储(例如 useContext),您最终会通过所有组件和所有路由(页面)传递 displayName、photoURL、手机号码。

    Redux 就像一个集中式存储,您的所有组件都可以访问该存储以获取您存储的信息。

    如果redux比较复杂,使用useContext,非常简单。

    即使在我非常复杂的应用程序中,我也会使用 useContext。

    示例。如果 Page 是登录名,而您的 Child 是显示姓名和手机号码的组件,您最终会将 props 向下传递

    <Page>
        <Parent1 name={name} mobile={mobile} />
            <Parent2 name={name} mobile={mobile}/>
                <Child name={name} mobile={mobile}/>
    

    如果您有某种类型的存储,例如 useContext,则获取名称很容易,就像在您想要访问信息的任何组件中一样。

     const { name, mobile } = useContext(storeContext)
    

    【讨论】:

    • 非常感谢您的回复。我需要存储身份验证和用户信息之类的东西——我现在也在这样做。像博客系统这样的东西呢?人们通常将所有帖子存储在商店中,还是根据需要从数据库中获取它们?我知道 - 不会有任何硬性规定。
    • 商店不是数据库,也不是存储所有东西的地方。对我来说,我会将它存储在数据库中并在我的组件中获取它们,因为我只在一个地方渲染它们。这很方便,但不需要有商店。
    【解决方案2】:

    对于不太复杂的应用程序,您可以在需要访问数据库以减少重复并通过props 中的组件树向下传递数据时创建一个共享帮助模块。在不使用 redux 等集中式存储时,您必须小心为您的数据只保留一个“事实来源”(如果适用)。

    何时或是否将 redux 引入应用程序是主要基于应用程序复杂性的判断调用;它不是黑白的。我确信有一些有用的博客文章和文章可以帮助解决这个问题,但没有什么比经验更重要了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-11
      • 2018-05-17
      • 1970-01-01
      • 1970-01-01
      • 2019-08-19
      • 2021-04-15
      • 2018-05-06
      相关资源
      最近更新 更多