Передача реквизитов класса в mapStateToProps - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть компонент, подключенный к хранилищу, один из реквизитов, передаваемых компоненту, - это post, который является объектом.Я хочу передать post.id на mapStateToProps, чтобы я мог наблюдать за изменениями в массиве комментариев.

Вот что я пробовал до сих пор

const mapStateToProps = state => ({
  myProfile: state.users.myProfile,
  comments: state.activity.posts[this.postID].comments,
});

const mapStateToProps2 = state => {
  const id = this.postID;

  return {
    myProfile: state.users.myProfile,
    comments: state.activity.posts[id].comments,
  };
};

кто-нибудь знаетесли я могу сделать это, какие-нибудь идеи, как?

ура

РЕДАКТИРОВАТЬ Вот реализация, с которой я пошел в конце:

 const mapStateToProps = (state, ownProps) => { 
    const { navigation } = ownProps; 
    const navPost = navigation.getParam('post', {}); 

    const postComments = state.activity.posts.filter( post => post.id === navPost.id );

    return { 
       myProfile: state.users.myProfile, 
       comments: postComments[0].comments, 
    }; 
};

1 Ответ

2 голосов
/ 11 апреля 2019

Ключевое слово this, скорее всего, ссылается на неправильную область и не может найти postId.

. Либо присвойте идентификатор в состоянии и получите доступ к нему, например, state.postId, либо передайте идентификатор всвойства компонента и используйте его следующим образом:

function mapStateToProps(state, ownProps) {
  const { visibilityFilter } = state
  const { id } = ownProps
  const todo = getTodoById(state, id)

  // component receives additionally:
  return { todo, visibilityFilter }
}

// Later, in your application, a parent component renders:
;<ConnectedTodo id={123} />
// and your component receives props.id, props.todo, and props.visibilityFilter

Источник: https://react -redux.js.org / using-реагировать-редукса / connect-mapstate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...