реакция-редукса useSelector крюк запрещает пропускать реквизиты непосредственно к селектору - PullRequest
2 голосов
/ 05 июля 2019

Я только начал играть с новым useSelector хуком, предоставленным в react-redux.

Я всегда передавал реквизиты непосредственно своим селекторам, как это:

mapStateToProps(state, ownProps) {
   return {
      user: userSelector(state, ownProps.userId)
   }
}

Считается ли передача реквизитов непосредственно в селекторы антишаблоном?

Если «Нет», то как я могу добиться этого с помощью useSelector?

Если «Да», то каковы правильные шаблоныдобиться этой параметризации селектора?

1 Ответ

2 голосов
/ 05 июля 2019

Это хорошая практика для использования props в селекторах.

Функция селектора не получает аргумент ownProps.Однако реквизиты можно использовать через замыкание (см. Примеры ниже) или с помощью селектора с карри.

useSelector принимает функцию с аргументом state.Если вы передадите функцию стрелки в useSelector, вы сможете получить доступ к любой переменной в закрытии, включая props.

Этот пример взят из официальной документации

import React from 'react'
import { useSelector } from 'react-redux'

export const TodoListItem = props => {
  const todo = useSelector(state => state.todos[props.id])
  return <div>{todo.text}</div>
}

Также посмотрите на страницу устаревшие реквизиты в официальной документации о том, как избежать некоторых ошибок при локальном использовании props.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...