我对Redux比较陌生,一直在阅读文档,但是我处于停滞状态。
我的应用程序包括获取API数据并使用FlatList显示它,我已经使用Redux成功完成了此操作。但是,我想选择ListItem,导航到新屏幕并显示项目详细信息。
以前,我尝试使用导航进行以下操作:
onPress={ () => this.props.navigation.navigate("DeliveryDetails", {
title: `${item.Title} ${item.FirstName} ${item.LastName}`,
address: `${item.Primary_DeliveryStreet1},
packages: `${item.Package}` //This is an array inside of 'item' })}
我能够在新的详细信息页面上通过const {params} = this.props.navigation.state;
检索所有数据,除了。.如上所述传递的任何数组都将记录为[]
,其中没有数据。当然,传递${item.Package[0]}
仅适用于1个元素。
问题:
我如何使用Redux为每个FlatList ListItem分配一个ID,以检索我需要的数据,而无需通过this.props.navigation.navigate
传递数据的方法?相反,将不胜感激任何其他解决方案。
异径管:
import { FETCH_CUSTOMERS} from '../actions/types';
const initialState = {
items: [],
item: {} // a bit confused on implementing this
};
export default function (state = initialState, action) {
switch (action.type) {
case FETCH_CUSTOMERS:
return {
...state,
items: action.payload,
};
default:
return state;
}
}
操作:
import {FETCH_CUSTOMERS} from './types';
export const fetchCustomerDetails = () => async dispatch => {
await fetch('http://xxxxx/xxxxx/xxxxxx.php')
.then(res => res.json())
.then(data => dispatch({
type: FETCH_CUSTOMERS,
payload: data
}))
}