javascript - Redux 返回默认值

标签 javascript reactjs react-native redux

我将 React Native 与 Redux 一起用于我正在构建的应用程序。我还使用了两个 npm 模块,react-native-simple-store 和 redux promise。在继续解释我的问题时,我将解释每一个的用法。

我有一个在 componentWillMount 方法中触发的基本 Action 创建器。这个 Action 创建者的目的是从用户的设备中检索数据数组。我使用 react-native-simple-store 来执行此操作,因为它总是返回您请求的数据作为 promise 。这是我的 Action 创作者:

import store from 'react-native-simple-store'
export const GET_ALARMS = 'get_alarms'

export const getAlarms = () => {
  // this variable will hold the promise
  let alarms = store.get('alarms')

  return {
    type: GET_ALARMS,
    payload: alarms
  }
}

在我的 reducer 中,我希望收到我在 action creator 中请求的数组。但是,它不起作用,我每次都返回一个空数组。这是我的 reducer :

import GET_ALARMS from '../actions/getAlarms'

export default (state = [], action) => {
  console.log(action)
  switch (action.type) {
    case 'GET_ALARMS':
      return [...state, action.payload]
  }

  return state
}

有趣的是,当我 console.log 进入 reducer 的 Action 时,我在控制台中看到了这个:

Object { type: "get_alarms", payload: Array(3) }
   payload: Array(3)
      0: Object
      1: Object
      2: Object
   type: "get_alarms"

这是我想要的数据,它只是一个包含 3 个对象的数组。它就在那里,但我遗漏了一些细节。

这方面有什么帮助吗?

最佳答案

reducer 中的两个错误

  1. 您错误地导入了 ACtion 常量,因为它不是默认导出,您需要使用 {}

  2. 在 Swtich 的情况下,使用这个不带引号的导入变量。

你的代码

import {GET_ALARMS} from '../actions/getAlarms'

export default (state = [], action) => {
  console.log(action)
  switch (action.type) {
    case GET_ALARMS:
      return [...state, action.payload]
  }

 return state
}

关于javascript - Redux 返回默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44570362/

相关文章:

javascript - JavaScript 的潜在恶意使用?

javascript - 使用 lodash react js 过滤具有数组值的嵌套数据

reactjs - 带有 Typescript 的 Redux-Toolkit。无法调度由 createAsyncThunk 创建的操作

javascript - Reactjs,如何获取元素的尺寸

react-native - 映射 React Native 时更新输入值

react-native-chart-kit 饼图任何修改或任何属性

javascript - 如何简化对象迭代代码?

javascript - 如何使用 JavaScript 创建等距拖放网格?

ios - React Native iOS Release 构建停留在旧代码上,但 Debug 构建工作正常

javascript - 将节点添加到 d3js 中现有的集群力布局