В этом посте я познакомлю вас с практическим сценарием, в котором родительский компонент (ListBox) взаимодействует с дочерним компонентом (AlertComponent) с использованием реквизита и обратных вызовов.
Это полезно в React, когда вы хотите, чтобы дочерний компонент связывался с родительским для поддержания состояния или запуска действий.
Давайте разберемся на этом примере:
Вот структура взаимодействия:
import React, { useState } from 'react'; import AlertComponent from './AlertComponent'; const ListBox = () => { const [showComponent, setShowComponent] = useState(false); const alertAction = async () => { setShowComponent(!showComponent); }; return ( ); }; export default ListBox;{/* Passing props to the child component */}Item 1
{/* Other list items */}{ alert('Item Deleted'); setShowComponent(false); }} onCancel={() => setShowComponent(false)} showComponent={alertAction} />
export const AlertComponent: = ({ title, description, onAccept, onCancel, showComponent }) => { return (... rest of the code ) }
showComponent работает как обратный вызов, поскольку поддерживает состояние, отвечающее за отображение/скрытие AlertComponent
Каждый раз, когда нажимается Отклонить, этот обратный вызов переключает текущее состояние showComponent.
{ alert('Item Deleted'); setShowComponent(false); }} onCancel={() => setShowComponent(false)} showComponent={alertAction} />
Использование props и обратных вызовов таким образом обеспечивает четкий поток данных между родительским и дочерним компонентами в React.
Родитель может контролировать состояние и передавать его дочернему элементу, в то время как дочерний элемент может связываться с ним посредством обратных вызовов, чтобы информировать родителя о любых изменениях или действиях, выполненных пользователем.
Это особенно полезно для таких сценариев, как показ предупреждений, модальных окон или всплывающих окон в ответ на взаимодействие с пользователем.
Продолжайте строить!
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3