我正在尝试从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']。有人知道为什么会这样吗?
谢谢
答案 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;
}
};