【问题标题】:Where should I dispatch actions to fetch my data using React-Native and redux我应该在哪里使用 React-Native 和 redux 调度操作来获取我的数据
【发布时间】:2017-10-21 02:22:04
【问题描述】:

我想获取在 react-native 中显示我的应用仪表板所需的所有数据。该应用类似于the facebook one

我正在使用 react-native、redux、redux-saga、react-navigation 和 REST api。

我必须获取 帖子列表 以显示主页和 headerBar 的 通知计数。其他选项卡页面与主页面同时安装,以允许流畅的过渡。所以我也需要 当前用户 用于帐户页面

最后,商店被持久化,应用可以长时间处于后台模式。所以我需要经常刷新我的数据以确保有最后的更改。

我有 sagas 调用和启动操作来更新商店。

这里是我找到的策略:

  1. 我可以连接每个页面组件并给它们一个fetchAllPageData(),它调度我在componentDidMount 中调用的获取操作
  2. 我可以连接较小的组件,以允许他们使用相同的策略提取所需的数据(即fetchUser 到在帐户页面中显示用户的组件,fetchNotificationCount 到显示数量的组件通知...)
  3. 我可以使用创建一个 redux 中间件来侦听页面更改并调用所有获取数据操作。

我目前混合使用第一种和第二种解决方案,但我对它不太满意:

  • 我并不总是知道从哪里获取数据
  • 安装组件后刷新数据的策略有点“hacky”和随机
  • 重构时我经常需要移动到调用完成的地方

这个主题的最新技术是什么?你有什么建议?

【问题讨论】:

    标签: reactjs react-native react-redux react-navigation


    【解决方案1】:

    通常的建议是拦截在中间件中发出 AJAX 请求的操作,并在传递结果之前在那里解决它们。

    This article 更深入地解释它。

    【讨论】:

    • 感谢您的回答。我使用 redux-saga 来完成这项工作。问题更多的是“我应该在哪里调度操作?”
    • 您的数据是实时的吗?如果是这样,也许 Websockets 会比 AJAX 更合适。否则,我会倾向于在呈现响应之前监听页面更改并解决中间件中的操作。如果需要,应该很容易在状态中设置加载微调器字段。
    • 这种方法类似于我对 Angular 1 应用程序所做的 - 基本上在触发转换到另一个页面之前获取所有依赖项。这样用户就不会看到一闪而过的无样式内容,您可以根据需要显示加载微调器。
    【解决方案2】:

    你可以/应该在 componentDidMount 或 componentWillMount 中做。

    【讨论】:

      猜你喜欢
      • 2020-09-07
      • 2017-05-23
      • 2018-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多