Redux提取返回空的有效负载数组

时间:2019-06-26 20:23:00

标签: react-native redux

我正在尝试从API提取数据(现在,我只有一个要测试的数组)并在屏幕上显示。

我创建一个动作文件:

import {
  GET_TENANT_DATA
} from './Types';

export const getTenants = ({ userID }) => {
  return (dispatch) => {
    const test = ['Saab', 'Volvo', 'BMW']; // Later it will be changed for axios fetch
    dispatch({
      type: GET_TENANT_DATA,
      payload: test
    });
  };
};

我的减速器:

import {
  GET_TENANT_DATA
} from '../actions/Types';

const INITIAL_STATE = {
  error: false,
  data: []
};

export default (state = INITIAL_STATE, action) => {
  switch (action.type) {
    case GET_TENANT_DATA:
      return { ...state, error: false, tenants: action.payload };
    default:
      return state;
  }
};

然后,在屏幕上,我通过console.log对其进行测试:

...
componentDidMount() {
    AsyncStorage.getItem('userID')
      .then((value) => {
        const userId = JSON.parse(value);
        this.props.getTenants(userId);
      });
  }

  render() {
    console.log(this.props.data);
...

但是,日志显示的是空数组,而不是['Saab','Volvo','BMW']。有人知道为什么会这样吗?

谢谢

1 个答案:

答案 0 :(得分:1)

不是在减速器中设置data属性,而是在设置tenants属性,而data保留最初设置的状态-空。

像这样更改减速器:

export default (state = INITIAL_STATE, action) => {
  switch (action.type) {
    case GET_TENANT_DATA:
      return { ...state, error: false, data: action.payload };
    default:
      return state;
  }
};