Подтвердить что ты не робот

Что такое OwnProps в реакции-редукции?

Я читаю API на response-redux и смотрю один из примеров github Redux: приложение Redux todo

В одном из контейнеров FilterLink есть mapDispatchToPropsmapStateToProps), чтобы принимать два аргумента, один из которых - собственный.

const mapDispatchToProps = (dispatch, ownProps) => ({
  onClick: () => {
    dispatch(setVisibilityFilter(ownProps.filter))
  }
})

В документах API говорится:

"Если ваша функция mapStateToProps объявлена как принимающая два параметра, она будет вызываться с состоянием хранилища в качестве первого параметра, а реквизит передается подключенному компоненту в качестве второго параметра, а также будет повторно вызываться всякий раз, когда подключенный компонент получает новые реквизит, определяемый путем неглубоких сравнений сравнений (второй параметр обычно называется собственными программами по соглашению). "

Я до сих пор не могу полностью понять, что он делает. Может ли кто-нибудь объяснить, что делает ownProps с другим примером?

4b9b3361

Ответ 1

ownProps - это атрибуты, которые передаются при использовании компонента. В простом Реакторе это можно было бы назвать реквизитами.

например, в Footer.js FilterLink используется как:

<FilterLink filter="SHOW_ALL">
  All
</FilterLink>

Таким образом, метод mapStateToProps будет вызываться с ownProps имеющим значение:

{
  "filter": "SHOW_ALL",
  "children": ...
}

Метод mapStateToProps используется в компоненте, mapStateToProps Redux, для объединения явно переданных свойств (ownProps) с состоянием, управляемым хранилищем Redux, в props обернутого компонента.

Итак, в вашем связанном примере FilterLink

const mapStateToProps = (state, ownProps) => ({
  active: ownProps.filter === state.visibilityFilter
})

компонент активен (this.props.active == true), если атрибут filter (например, SHOW_ALL) соответствует состоянию visibiltyFilter в state, то есть если он в настоящее время фильтруется этим значением.