簡體   English   中英

React 包裝器組件未按預期工作

[英]React wrapper component not working as expected

我正在使用React-Dropzone並遵循網站上的第一個示例:

function MyDropzone() {
  const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop });

  return (
    <div {...getRootProps()}>
      <input {...getInputProps()} />
      Hello
    </div>
  );
}

我想像這樣創建一個包裝器 class :

function MyDropzone() {
  const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop });

  function Wrapper({ children }) {
    return (
      <div {...getRootProps()}>
        <input {...getInputProps()} />
        {children}
      </div>
    );
  }

  return <Wrapper>Hello</Wrapper>;
}

但是當我這樣做時, react-dropzone 停止工作。 當我單擊該元素時,什么都沒有發生,而在第一個示例中它工作正常。 這不是包裝器組件的工作方式還是我遺漏了什么?


你可以這樣做。

function Wrapper({ children }) {
  const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop });
  return (
    <div {...getRootProps()}>
      <input {...getInputProps()} />
      {children}
    </div>
  );
}

function MyDropzone() {
  return <Wrapper>Hello</Wrapper>;
}

這背后的原因是如果您在 MyDropzone 功能組件中定義 Wrapper,它會在您每次渲染時定義新組件。 這意味着如果將重新渲染每個渲染。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM