Переключить два компонента с помощью перехватчиков реакции - PullRequest
0 голосов
/ 27 мая 2020

У меня есть два экземпляра одного и того же компонента. Компонент может быть открыт или закрыт.

Компонент имеет const [isOpen, setIsOpen] = useState(false)

, который устанавливается с помощью useCallback

const openComponent = useCallback(() => {
    setIsOpen(true)
  }, [])

  const closeComponent = useCallback(() => {
    setIsOpen(false)
  }, [])

Компоненты находятся в своем собственном контексте. Но у меня возникли проблемы даже с идеей, как обрабатывать через родителя, , когда открывается один экземпляр, закрывает другой головоломка.

Передача состояния родительскому элементу и закрытие всех из них перед открытием новый не вариант.

Есть идеи?

1 Ответ

2 голосов
/ 27 мая 2020

Вы должны поднять состояние этих двух компонентов (open или false) до родительского, чтобы родитель мог иметь этот logi c (только один открытый за раз).

Родитель должен проходить через props открытое состояние для каждого дочернего элемента вместе со ссылкой на changeStateHandler (логическое значение), которое дети могут вызывать, чтобы уведомить родителя о том, что они были переключены.

Таким образом, в родительском элементе у вас будет: 1007 * У детей:

// calls props.onStateChange on toggle, use props.isOpen to display proper state
...