javascript - ReactJS- Katalogväljardialog fungerar inte


Jag vill ha en katalogvalsdialog i min React-app. Jag följde denna SO-tråd som kan fungera för vissa personer men inte för mig. Får kompileringsfel som

Egenskapen 'directory' finns inte på typen 'DetailedHTMLProps'.

Jag uppgraderade React till den senaste RC-versionen 17.rc.1 i tron att det kanske skulle finnas en buggfix för detta, men utan framgång.

Redigera

Det finns en metod för att lägga till detta skript i slutet av filen med hjälp av taggen för directoryval, föreslagen av @Scratch'N'Purr i kommentarerna.

declare module 'react' {
  interface HTMLAttributes<T> extends AriaAttributes, DOMAttributes<T> {
    // extends React's HTMLAttributes
    directory?: string;
    webkitdirectory?:string;
  }
}

Svar #1

Det fungerar bra i Javascript men problemet är med Typescript. Jag antar att du har rätt om att det är ett problem.

Du kan dock ställa in det manuellt med ref.

import * as React from "react";
import "./styles.css";

export default function App() {
  const ref = React.useRef<HTMLInputElement>(null);

  React.useEffect(() => {
    if (ref.current !== null) {
      ref.current.setAttribute("directory", "");
      ref.current.setAttribute("webkitdirectory", "");
    }
  }, [ref]);

  return <input type="file" ref={ref} />;
}

Relaterade artiklar