Что ownProps в React-Redux в?

Я читаю API-интерфейс на React-Redux на и, глядя на один из примеров GitHub Redux:Redux todo app

один из контейнеров, FilterLink, и mapDispatchToPropsmapStateToProps) принимает два аргумента, один из них 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, т. е. если он в настоящее время фильтруется этим значением.