Я пытаюсь отфильтровать массив, основанный на сравнении post.id, получить значение и добавить его в свойство likes.
action.data.filter((post) => post.id === action.id).Likes.length
не работает так, как я думалбы, дает мне ошибку, что длина не определена
, если я сделаю что-то вроде
action.data.filter((post) => post.id === 5)
, это даст мне результат, который я ищу, но это не сработает, нужнобыть динамичным
return {
...state,
posts: action.data, // maps posts fine,
likes: action.data.filter((post) => post.id === action.id).Likes.length // does not do what i want it do :(
}
Он должен быть динамическим, чтобы любое значение для этого конкретного сообщения имело свое собственное значение.Что я должен сделать вместо этого или что может быть решением?
, когда он называется {this.props.likes}
action.id (получает существующие идентификаторы сообщений)
console.log(action.id)
Выводит это
[5,2]
Публикует вывод данных этого
(2) [{…}, {…}]
0:
Likes: (32)
createdAt: "2019-04-26T09:38:10.324Z"
id: 5
post_content: "ssss"
title: "React Interview Questionsdd"
updatedAt: "2019-04-26T09:38:10.324Z"
userId: 1
username: "owlmans"
__proto__: Object
1: {id: 3, title: "React Interview sssQuestions", post_content: "ggg",
username: "owlman", createdAt: "2019-04-24T20:48:36.710Z", …}
length: 2
__proto__: Array(0)
Actions.js
export const GetPosts = () => {
return (dispatch, getState) => {
return Axios.get('/api/posts/myPosts')
.then( (res) => {
const data = res.data
const id = data.map( (post) => post.id) // gets posts id [5,3]
dispatch({type: GET_POSTS, data, id})
})
}
}