【问题标题】:Hydrating a React/Redux App From a REST API从 REST API 为 React/Redux 应用程序加水
【发布时间】:2018-03-20 13:53:29
【问题描述】:

我的前端有一个 React/Redux 应用程序,后端有一个 REST API,我使用 JWT 作为一种“会话”ID(与我的 oAuth 服务器 Laravel Passport 一起使用)。

无论如何,我想知道当您拥有一个具有单个资源端点的 RESTful 服务时,当页面最初加载时,为 redux 存储补充水分的最佳策略是什么。

目前我正在安装组件。所以说一个组件列出了一个资源,我将 api/hydrate 称为该资源的组件挂载上的存储。虽然这会导致许多 API 调用,并且在组件再次挂载时可能会导致不必要的调用。

您知道有没有更好的替代方案?我主要担心的是我不想在我的 API 中引入一些奇怪的端点,专门用于水合页面。

【问题讨论】:

    标签: reactjs rest redux hydration


    【解决方案1】:

    不要将组件绑定到 api 端点。使用它们的生命周期钩子来触发数据的初始获取,但通过调度异步操作。当一个组件再次挂载时,它可以从 redux 状态渲染它的资源,或者运行一些逻辑来确定它已经过时并调度另一个动作来更新 store。

    【讨论】:

    • 我正在使用 componentDidMount 生命周期钩子来执行我现在传递给它的异步操作。您是否建议我使用不同的钩子仅在商店中不存在数据时才获取数据?像 componentWillReceiveProps 什么的?
    • 不,我想说你可以在那里做。仅当 props 中仍然缺少数据时才调度异步操作,以便可以在不触发请求的情况下重新安装组件。
    • 很公平。您是否会说使用此方法产生的额外 HTTP 请求值得拥有更好设计的 API,我可以从自己的应用程序中使用它,并在未来通过 oAuth 公开它?
    • 您是指要保存的额外 HTTP 请求,还是在挂载时一遍又一遍地发出的请求?在不了解应用程序的情况下,无法真正判断您的 API 设计。我只能告诉你的是,当快速重新安装组件时,用户每次都等待数据被获取真的很烦人,你基本上失去了单页应用程序的主要卖点之一。
    • 我更多的是谈论使应用程序水合所需的多个 HTTP 请求,而不是一个请求即可获得所需的一切。多个请求非常适合保持 API 设计整洁,但在性能方面它缺乏:/
    猜你喜欢
    • 2019-02-07
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 2016-12-11
    • 2018-07-21
    • 2016-05-20
    • 1970-01-01
    相关资源
    最近更新 更多