javascript - 如何在首次渲染之前获取 redux 中的数据并将其设置为默认状态

标签 javascript reactjs redux fetch

我有下拉过滤器来按日期显示项目,例如显示过去 24 小时的数据、显示过去 3 天的数据。

我的 reducer 中有defaultState

const defaultState = {
  dataArray: [],
  a: true,
  b: false
}

默认情况下dataArray为空。 我有 reducer 和 Action 。在 componentDidMount 方法中,我通过分派(dispatch)一些操作从服务器获取数据。 如果我刷新页面,则列出 24 小时内最后一项的默认页面为空,因为 dataArry 来 self 的 reducer 中的 defaultState。但是,如果我更改页面以列出过去 3 天的数据,那么 componentWillReceiveProps 就会起作用,并且在这个方法中我会获取数据,它会减少我的状态并返回新的状态

dataArray = [{some data}]

如何获取数据并将其设置为状态以在页面刷新后呈现它?

最佳答案

向 defaultState 添加一个“正在加载”变量并将其初始化为 true。获取数据完成后,将其设置为 false。

在您的组件中检查此变量。如果为 true,则显示微调器和/或加载消息,否则显示数据。

除此之外,每次开始获取时,在获取之前,都会触发一个名为“FETCH_START”的操作,该操作会将加载变量设置为 true。

如果抓取过程中出现错误,可以设置另一个状态变量来表示错误消息。该变量将被初始化(每次开始获取时)为空字符串。如果加载完成,您可以检查此错误变量,如果有错误,则显示错误消息,而不是显示数据。

此过程对于各种情况都很有用,例如身份验证等。

关于javascript - 如何在首次渲染之前获取 redux 中的数据并将其设置为默认状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54506005/

相关文章:

javascript - getElementById 在歌剧 12.15 中不起作用

javascript - 使用JS改变背景颜色

javascript - Google map API 错误 : This API key is not authorized to use this service or API. 地点 API 错误:ApiTargetBlockedMapError

css - 部分css添加flex后渲染延迟

javascript - 函数执行两次

redux reducer vs Action

javascript - 使用 Javascript 显示从用户到 div 的输入(一个数字)

reactjs - 正确管理 React 状态会出现奇怪的错误

javascript - 无法从 html 检索输入

javascript - React 中的数据管理策略