Redux返回默认值

时间:2017-06-15 14:38:38

标签: javascript reactjs react-native redux

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

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

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中,我希望收到我在我的动作创建者中要求的数组。但是,它不起作用,我最终每次返回一个空数组。这是我的减速机:

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的操作时,我在控制台中看到了这一点:

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

这是我想要的数据,它只是一个包含3个对象的数组。它在那里,但我错过了一些东西。

对此有何帮助?

2 个答案:

答案 0 :(得分:3)

减速机出现两个错误

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

  2. 在Swtich案例中,使用不带引号的导入变量。

  3. 您的代码

    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
    }
    

答案 1 :(得分:0)

根据您的减速机,您的行动应该是大写字母:

export const GET_ALARMS = 'GET_ALARMS'

您的开关机箱区分大小写。这就是你永远不会参与此案的原因。