我将 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 中的两个错误
您错误地导入了 ACtion 常量,因为它不是默认导出,您需要使用
{}
在 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/