ReactのRefを使用してアップロードコンポーネントを作成する

この章では、Reactで参照を使用する方法を説明します。この章の終わりまでに、効果的で使いやすい方法で既存のアプリケーションでRefを使用できるようになります。

Reactでは、Refを使用して、DOMに直接アクセス、操作、および対話します。HTML要素への直接参照により、クライアント側アプリケーションの作成時に一般的に発生するタスクを実行できます。これらのタスクには、データ操作とレイアウト分析が含まれますが、これらに限定されません。

Refを使用して、プレーンCSSを使用してスタイルを設定できなかったスタイル付き入力ボタンを作成します。最初にファイル入力を作成し、次にカスタムボタンコンポーネントを追加します。ボタンをクリックすると、入力のファイルアップロード機能がトリガーされます。

  1. create-react-appCLIを使用して新しいプロジェクトを作成します。
  2. $ npx create-react-app button-refs
    

    cd button-refs && npm start
    

    const App = () => {
      return (
        <input />
      );
    }
    export default App;
    

    const App = () => {
      return (
        <input type="file" />
      );
    }
    export default App;
    

5.buttonオレンジ色の背景と白いフォントの色のスタイルを持つコンポーネントを追加します。ネイティブ入力ファイルを非表示にするには、hidden属性を追加します。

const App = () => {
  return (
    <>
      <input type="file" hidden={true} />
      <button style={{ backgroundColor: "orange", color: "white" }}>
        Upload
      </button>
    </>
  );
}
export default App;

const App = () => {
  inputRef;
  return (
    <>
      <input type="file" hidden={true} />
      <button style={{ backgroundColor: "orange", color: "white" }}>
        Upload
      </button>
    </>
  );
}
export default App;

const App = () => {
  let inputRef;
  return (
    <>
      <input
        type="file"
        hidden={true}
        ref={refParam => inputRef = refParam}
      />
      <button style={{ backgroundColor: "orange", color: "white" }}>
        Upload
      </button>
    </>
  );
}
export default App;

const App = () => {
  let inputRef;
  return (
    <>
      <input
        type="file"
        hidden={true}
        ref={refParam => inputRef = refParam}
      />
      <button
        style={{ backgroundColor: "orange", color: "white" }}
        onClick={() => inputRef.click()}
      >
        Upload
      </button>
    </>
  );
}
export default App;

ここで、ボタンをクリックすると、ファイルのアップロードを求めるプロンプトが表示されます。これは、カスタムボタンがファイル入力のネイティブ機能をトリガーするためです。

React Refを使用して、ほとんどカスタマイズできないネイティブ入力の機能を、必要に応じてスタイルを設定できるボタンコンポーネントにバインドしました。特に、refオブジェクトとして入力コンポーネントに渡された関数を検査します。

リポジトリのURL: https://github.com/easywebsify/button-refs

提案された投稿

脳卒中の壊滅的な結果を避ける: 家族の旅から学ぶ 。

脳卒中の壊滅的な結果を避ける: 家族の旅から学ぶ 。

はじめに 脳卒中は、いつでも誰でも起こり得る医療上の緊急事態です。これは、脳の一部への血流が中断され、脳機能が突然失われることで発生します。

私が最もよく使用するコーディング リソース

私が最もよく使用するコーディング リソース

今週、毎日のメールリストのメンバーからメールを受け取りました。彼らは次のことを知りたかったのです。毎日、毎週、毎月どのリソースにアクセスしていますか? 素晴らしい質問です!私のワークフローと使用している主なリソースについての洞察を共有したいと思います。

関連記事

脅威ハンティングのための OSINT の収集

脅威ハンティングのための OSINT の収集

サイバー愛好家の皆さん、こんにちは!OSINT for Threat Hunting シリーズへようこそ。最初の記事では、OSINT の概要と脅威ハンティングにおけるその重要性について説明しました。

キリスト教徒の迫害: 私たちが語らないヘイトクライム

イスラム嫌悪のことは忘れてください。宗教的憎悪犯罪の主な犠牲者はキリスト教徒(そしてユダヤ人)です。

キリスト教徒の迫害: 私たちが語らないヘイトクライム

理性的な人なら誰でも、政界とメディア界が左派、さらには極左によって支配されており、政治的言説に不均衡を生み出している状況を知っています。宗教の分野では、この不均衡は明らかです。左翼の新聞やネットワークは急いでキリスト教の信仰を擁護していません。

待ちの季節にできること(テクノロジー業界での最初の仕事に就くのを待っているとき)

待ちの季節にできること(テクノロジー業界での最初の仕事に就くのを待っているとき)

新しいキャリアへの転職は、一人でやろうとすると非常に困難になる可能性があります。あなたと同じ学習レベルにあり、同様の目標、粘り強さ、意欲を共有する責任パートナーを見つけることが重要です。

一部のフリーランサーが自分の人生を偽っている理由

一部のフリーランサーが自分の人生を偽っている理由

私は最近、世界最大のプロフェッショナルなソーシャル ネットワークである Linkedin を利用していて、フォローしているフリーランス デザイナーの注目を集めた投稿を見つけました。彼らはすべて、飛行機からの写真、ラップトップを持ってビーチで撮影した写真、スイミング プールやオフィスから素晴らしい景色を眺めた写真を投稿していました。