setState через ref не работает внутри useEffect? - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь очистить filtered состояние компонента таблицы реакции с помощью useRef, а именно. ref.current.setState({...}). Это фрагмент моего компонента:

const Customers = (props) => {
  const customerTableRef = useRef()

  useEffect(() => {
    const customerTable = customerTableRef.current
    if (customerTable) {
      customerTable.setState({ ...customerTable.state, filtered: [] })
      console.log("table effect::", customerTable.state)
    }
  }, [props.selectedDealer])

У меня есть выбранный вход в пользовательском интерфейсе, связанный с props.selectedDealer Я хочу очистить фильтры таблицы реагирования при каждом изменении пользователем props.selectedDealer. Компонент таблицы реакции недоступен в компоненте Customers, но на очень низком уровне в иерархии:

Customers > CustomersTable > AppTableWrapper > AppTable > ReactTable.

Я передаю customerTableRef в ReactTable. В инструментах разработки я вижу, что ссылка надувается параметрами компонента, но customerTable.setState({ ...customerTable.state, filtered: []}) не изменяет состояние ReactTable.

1 Ответ

0 голосов
/ 17 марта 2020

Предлагаю передать customerTable на приставку. После того, как мы передадим его вашему компоненту по избыточности. В переменной состояния: useState или useReducer. Обновление переменных состояния вызовет повторную визуализацию компонента. В ссылке: Эквивалентно переменным экземпляра в компонентах класса. Отключение свойства .current не вызовет повторную визуализацию

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