"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 쉘의 소품과 콜백

쉘의 소품과 콜백

2024-11-06에 게시됨
검색:774

Props and Callbacks in a shell

이 블로그 게시물에서는 상위 구성 요소(ListBox)가 하위 구성 요소(AlertComponent) 소품과 콜백을 사용합니다.

이는 상태를 유지하거나 작업을 트리거하기 위해 하위 구성 요소가 상위 구성 요소와 다시 통신하도록 하려는 경우 React에서 유용합니다.

이 예를 통해 이해해 봅시다:

  • 항목 목록을 표시하는 ListBox 구성 요소가 있습니다. 사용자가 항목을 길게 누르면 사용자가 항목을 삭제할지 여부를 묻는 경고 대화 상자가 나타납니다.

상호작용 분석은 다음과 같습니다.

  1. ListBox(상위)는 항목을 렌더링하고 필요한 props와 콜백을 AlertComponent(하위)에 전달합니다.
import React, { useState } from 'react';
import AlertComponent from './AlertComponent';

const ListBox = () => {
  const [showComponent, setShowComponent] = useState(false);

  const alertAction = async () => {
    setShowComponent(!showComponent);
  };

  return (
    

Item 1

{/* Other list items */}
{/* Passing props to the child component */} { alert('Item Deleted'); setShowComponent(false); }} onCancel={() => setShowComponent(false)} showComponent={alertAction} />
); }; export default ListBox;
  1. AlertComponent는 제목, 설명, onAccept, onCancel 등의 콜백과 상태 변경 소품인 showComponent.
export const AlertComponent: = ({ title, description, 
onAccept, onCancel, showComponent }) => {
return (
... rest of the code
)
}
  1. 상위 구성 요소는 대화 상자의 가시성을 관리해야 하며, 하위 구성 요소는 이 가시성을 전환하기 위해 콜백을 통해 이벤트를 내보내 상위 구성 요소와 상호 작용합니다.

showComponent는 AlertComponent

표시/숨기기를 담당하는 상태를 유지하므로 콜백으로 작동합니다.

거부를 누를 때마다 이 콜백은 showComponent의 현재 상태를 전환합니다.

 {
          alert('Item Deleted');
          setShowComponent(false);
        }}
        onCancel={() => setShowComponent(false)}
        showComponent={alertAction}
      />

이러한 방식으로 props콜백을 사용하면 React의 상위 구성 요소와 하위 구성 요소 간의 데이터 흐름이 명확해집니다.

부모는 상태를 제어하고 이를 자식에게 전달할 수 있으며, 자식은 콜백을 통해 다시 통신하여 사용자가 수행한 변경 사항이나 작업을 부모에게 알릴 수 있습니다.

이는 사용자 상호 작용에 대한 응답으로 경고, 모달 또는 팝업 표시와 같은 시나리오에 특히 유용합니다.

계속 구축하세요!

릴리스 선언문 이 글은 https://dev.to/amanbhoria/props-and-callbacks-in-a-shell-4jk?1에서 복제됩니다.1 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3