Прежде всего mapStateToProps
как функция имеет доступ к этим реквизитам в качестве второго аргумента , потому что объект сопоставления является подпоркой контейнера, который передается в Profile
. Или другими словами без reselect
это легко сделать как:
const mapStateToProps = (state, ownProps) => {
return {
posts: state.posts.filter(post => post.userId === ownProps.match.params.userId)
}
}
Когда дело доходит до reselect
, Я не использовал его , но я думаю эта часть повторного выбора README должна помочь вам.
Если я правильно прочитал, вам нужно написать селектор так, как он имеет props
как второй аргумент. Эти реквизиты должны передаваться из mapStateToProps
в селектор точно так же, как аргумент state
.
Не уверен, поможет ли это просто:
export const getUserPosts =
createSelector(
postSelector,
state, ownProps => state.posts.filter(post => post.userId === ownProps.match.params.userId)
)
const mapStateToProps = createStructuredSelector({
posts: getUserPosts,
});
Может быть, postSelector
нуждается в изменении.
Кроме того, как запасной вариант, я думаю, что ваш текущий код может работать как:
const mapStateToProps = (state, ownProps) => {
return {
posts: getUserPosts(ownProps.match.params)(state)
}
}