#javascript #reactjs
Вопрос:
Я использую react и redux для отображения списка элементов, когда пользователь нажимает «Просмотреть больше», они должны быть перенаправлены на другую страницу, где они смогут просмотреть информацию об одном элементе. Идентификатор передается правильно , но, к сожалению, вместо одного элемента возвращаются все элементы в списке. Что я делаю неправильно, любые советы или рекомендации о том, как я могу выполнить отправку действия с параметром onclick, будут оценены по достоинству.
Мое действие выглядит так :
//get specific worker
export const getWorker = (id) => {
return function (dispatch, getState) {
axios.get(`/worker/${id}`, tokenConfig(getState))
.then(res => dispatch({ type: WORKER_PROFILE_SUCCESS, payload: res.data.data })
)
.catch(error => dispatch(setError(error.response.data, error.response.status)))
}
}
Мой список выглядит так :
const mapStateToProps = state => {
return {
data: state.items
}
}
const mapDispatchToProps = dispatch => {
return {
getServiceProviders: () => dispatch(getServiceProviders())
}
}
function ServiceProvidersList({ data, getServiceProviders }, props) {
const { classes } = props;
let history = useHistory();
useEffect(() => {
getServiceProviders();
}, []);
const handleClick = (id) => e => {
console.log("here", id);
history.push(`/admin/service-provider/${id}`);
}
return (
<div>
{data.isLoading ? (
<h2> Loading... </h2>
) : (
<GridContainer>
{data.items amp;amp; data.items.length > 0 amp;amp; data.items.map(item => {
return (
<Grid container spacing={3}>
<Grid item xs={12} sm={10}>
<Card className="card" key={item.id} onClick={handleClick(item.id)}>
<CardHeader color="primary"> {item.user.first_name} {item.user.last_name} </CardHeader>
</Card>
</Grid>
</Grid>
)
})}
</GridContainer>
)}
</div>
)}
export default connect(
mapStateToProps,
mapDispatchToProps
)(withStyles(styles)(ServiceProvidersList));
Комментарии:
1. Что происходит, когда вы регистрируете в консоли часть res.data.data. Я подозреваю, что вы не передаете индивидуальные данные.
2. @CyberMessiah res.data.данные отображают список всех элементов
3. Если я правильно понимаю, вам нужно передать только идентификатор через отправку, чтобы запустить показанную отдельную страницу.
4. @CyberMessiah да, это так