Что 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
, т. е. если он в настоящее время фильтруется этим значением.