하위 구성 요소에서 상위 구성 요소로 데이터를 보내는 방법은 무엇입니까?
                                            
                                                
                                                
                                                
                                                
                                                
                                                 9937 단어  javascriptreactprogramming
                    
useImperativeHandle 및 forwardRef에 대해 알아야 합니다.이 기능이 무엇인지 개별적으로 설명하지는 않겠습니다. 그룹으로 보는 것이 좋습니다.
useImperativeHandle 를 사용하면 동일한 구성 요소에서 forwarRef 를 사용할 때까지 코드가 작동하며 사용하지 않으면 이와 같은 오류가 표시됩니다.
이를 수행하는 방법에 대한 더 나은 설명을 위해 몇 가지 코드를 수행해 보겠습니다.
버튼이 필요하고 이 버튼은 사용자가 누르는 클릭 수를 저장해야 하지만 같은 페이지의 다른 버튼을 통해서만 이 정보에 액세스해야 하므로 기본적으로 이와 같은 것을 갖게 될 것입니다.

먼저 자식 구성 요소를 만듭니다.
import { forwardRef, useImperativeHandle, useState } from "react";
import PropTypes from "prop-types";
const CustomButton = forwardRef(
  ({ className, action = () => {}, children }, ref) => {
    const [count, setCount] = useState(0);
    // we are returning a function inside the ref
    // to returning the count of clicks
    useImperativeHandle(ref, () => ({
      getCount() {
        return count;
      },
    }));
    return (
      <button
        className={`button ${className}`}
        onClick={() => {
          setCount((count+= 1)); // we count the clicks
          action();
        }}
      >
        {children}
      </button>
    );
  }
);
// This line is because we get a warning
// When we use forwardRef we always have to have displayName
CustomButton.displayName = "Custom Button";
CustomButton.propTypes = {
  className: PropTypes.string.isRequired,
  action: PropTypes.func.isRequired,
};
export default CustomButton;
useImperativeHandle 함수에서 우리는 클릭 수를 반환하는 함수 호출getCount()을 반환하고 있지만 이제 이 구성 요소를 사용하는 방법이 궁금할 것입니다. 부모 구성 요소를 만들어 봅시다.import { useRef } from "react";
import CustomButton from "../components/customButton";
export default function Example() {
  // we create a reference to the first button
  const button1 = useRef();
  // function of the first button
  const onClick = () => {
    console.log("do some action");
  };
  // function of the second button
  const onClick2 = () => {
    // we get the count with the reference of the first button
    console.log(ref.current.getCount());
  };
  return (
    <>
      <CustomButton ref={button1} action={onClick} className="is-success">
        Button 1
      </CustomButton>
      <CustomButton action={onClick2} className="is-danger mt-3">
        Get count of button 1
      </CustomButton>
    </>
  );
}
보시다시피 두 번째 버튼의 기능은 첫 번째 버튼의 카운트를 가져오지만 실행하고 몇 번의 클릭을 하고 콘솔을 봅니다.

콘솔에 버튼을 9번 눌렀다고 표시되었으니 이제 두 번째 버튼을 눌러보겠습니다.

우리는 성공적으로 금액을 얻습니다! 그러나 우리가 여전히 올바른 답을 얻는지 알아보기 위해 좀 더 해봅시다.

결론
우리는 우리가 했던 것처럼 함수나 객체, 문자열과 같은 자식 구성 요소에서 무엇이든 반환할 수 있습니다. 원하는 경우 DOM의 요소 또는 다른 참조를 반환할 수 있습니다. 이것의 힘은 매우 놀랍습니다.
자식에서 부모로 데이터를 전달하는 또 다른 접근 방식이 있지만 이것은 다른 게시물을 위한 것입니다...
읽어주셔서 감사하고 필요한 사항이 있으시면 언제든지 연락주세요.
Reference
이 문제에 관하여(하위 구성 요소에서 상위 구성 요소로 데이터를 보내는 방법은 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jafetmeza/how-to-send-data-from-a-child-component-to-a-parent-component-in-react-23h텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)