У меня есть два ответа API. Один из них - это массив объектов (продуктов) , а другой - отдельный объект (пользователь). Каждый продукт имеет свойство ID, соответствующее идентификатору пользователя внутри пользователя. Для каждого продукта я хочу отобразить информацию о пользователе (имя, адрес электронной почты) путем сопоставления идентификатора пользователя с идентификатором в Product.
Я пытаюсь сделать это, передав свойство userID от родителя, OrderList , для ребенка, UserInfo.
export class OrderList extends React.Component {
componentDidMount() {
this.props.fetchOrdersAndUsers();
}
renderList() {
return this.props.orders.map(order => {
return (
<div key={order.orderId}>
<h3>{order.name}</h3>
<UserInfo userId={order.id} />
</div>
);
});
}
render() {
return <div>{this.renderList()}</div>;
}
}
const mapStateToProps = state => {
return {
orders: state.theOrders.ordersArr
};
};
У меня есть действие, которое должно вызвать меня одного пользователя, передав ему идентификатор. И еще одно действие, которое должно получить все заказы и 1 пользователь. (Нет конечной точки для одновременной выборки всех пользователей)
export const fetchUser = id => {
return async dispatch => {
const results = await user.get(`/users/${id}`);
dispatch({ type: 'FETCH_USER', payload: results.data.user });
};
};
export const fetchOrdersAndUsers = (dispatch, getState) => {
return async (dispatch, getState) => {
await dispatch(fetchOrders());
const allOrders = getState().theOrders.ordersArr;
allOrders.forEach(order => {
return dispatch(fetchUser(order.id));
});
};
};
Внутри моего компонента UserInfo я передал свойство userID из родительского объекта функции fetchUser, но получаю ошибки
class UserInfo extends React.Component {
render(){
return (
<div>
<h4>{this.props.userId}</h4>
<p>{this.props.fetchUser(this.props.userId).name}</p> // doesn't work
</div>
);
}
}
Как извлечь идентификатор из продукта, сопоставив его с правильным идентификатором пользователя?