Что ownProps в React-Redux в?
Я читаю API-интерфейс на React-Redux на и, глядя на один из примеров GitHub Redux:Redux todo app
один из контейнеров, FilterLink, и mapDispatchToProps (и mapStateToProps) принимает два аргумента, один из них ownprops.
const mapDispatchToProps = (dispatch, ownProps) => ({
onClick: () => {
dispatch(setVisibilityFilter(ownProps.filter))
}
})
документы API говорят:
" если ваша функция mapStateToProps объявлена как принимающая два параметра, она будет вызываться с состоянием хранилища в качестве первого параметра и реквизит передается подключенному компоненту в качестве второго параметра, а также будет повторно вызываться всякий раз, когда подключенный компонент получает новый реквизит, как это определено неглубокими сравнениями равенства. (Второй параметр обычно называется ownProps по соглашению.)"
Я все еще не могу полностью осознать, что он делает. Может кто-нибудь объяснить, что ownProps делает с другим примером?
1 ответов
ownProps - это атрибуты, которые передаются при использовании компонента. В plain React это будет просто называться реквизитом.
например нижний колонтитул.js FilterLink используется как:
<FilterLink filter="SHOW_ALL">
All
</FilterLink>
поэтому метод mapStateToProps будет вызываться с помощью ownProps стоимостью:
{
"filter": "SHOW_ALL",
"children": ...
}
на mapStateToProps метод используется в Redux-обернутом компоненте для объединения явно переданных свойств (ownProps) с государственным обрабатывается Redux магазин в props обернутого компонента.
Итак, в вашем связанном примере FilterLink
const mapStateToProps = (state, ownProps) => ({
active: ownProps.filter === state.visibilityFilter
})
компонент активен (this.props.active == true) если filter атрибут (например, SHOW_ALL) соответствует visibiltyFilter на state, т. е. если он в настоящее время фильтруется этим значением.