クイック レスポンス (QR) コード ジェネレーターを作成する背後にある考え方は、データを画像からテキストに変換することです。 QR コードは単に画像データをテキストとして表現したものであり、レストランのメニューやコンサートのチケット、オンライン カレンダーの招待状、支払いなど、さまざまな用途に使用できます。
このチュートリアルでは、JavaScript ライブラリの React を使用して QR コードを作成する方法を学習します。 React を使用する利点は、開発者がコンポーネントを再利用する方法を提供するため、フロントエンド アプリケーションの構築が簡単になることです。
このチュートリアルでは、次の内容について説明します。
前提条件
このチュートリアルを完了するには、次のものが必要です。
入門
コード行を記述する前に、ターミナルを開いて次のコマンドを実行します。
npx create-react-app qrcode-generator
上記のコマンドは、ファイルをスキャフォールディングし、React アプリの作成に必要ないくつかのパッケージをインストールします。
次に、プロジェクト ディレクトリに移動し、次の場所でアクセス可能な開発サーバーを実行します。
http://localhost:3000
以下のコマンドを使用して、ブラウザーでアプリをプレビューします。 cd qrcode-generator npm start
最後に、QR コード ジェネレーターを作成するために必要な依存ライブラリをインストールしましょう。次のコマンドを実行します。
npm install qrcode.react
qrcode.react
: DOM にレンダリングするための QR コードを生成する React コンポーネント。これまでのところ素晴らしい仕事です!
QR コード ジェネレーターの作成は、QR コードの構造を含むファイルとコンポーネントの作成から始まります。 src ディレクトリ内に components というフォルダーを作成し、そのフォルダー内に QrCode.js という名前のファイルを作成します。
次のコードをコピーして貼り付けます。
// src/components/QrCode.js
import { useState } from "react" ; import { QRCodeCanvas } from "qrcode.react" ; const QrCode = () => { const [url, setUrl] = useState( "" ); const downloadQRCode = ( e ) => { e.preventDefault(); setUrl( "" ); }; const qrCodeEncoder = ( e ) => { setUrl(e.target.value); }; const qrcode = ( < QRCodeCanvas
id = "qrCode"
value = {url}
size = {300}
bgColor = { "# 00ff00 "} level = { " H "} />
); return ( < div className = "qrcode__container" >
< div > {qrcode} </ div >
< div className = "input__group" >
< form onSubmit = {downloadQRCode} >
< label > Enter URL </ label >
< input
type = "text"
value = {url}
onChange = {qrCodeEncoder}
placeholder = "https://hackernoon.com"
/>
< button type = "submit" disabled = {!url} >
Download QR code </ button >
</ form >
</ div >
</ div >
); }; export default QrCode;
上記のコード スニペットは、次のことを行います。
useState
変数の初期状態を宣言するために使用され、空の文字列に設定された url とsetState
関数、 setUrl
状態を更新するために使用されます qrcode.react
、生成された QR コードをレンダリングするために使用されます downloadQRCode
に付属する機能onSubmit
の方法<form>
送信イベントによってトリガーされる要素<input>
要素、 onChange
関数を使用したイベント ハンドラー'qrCodeEncoder'
ユーザーの入力を受け取り、その値を取得し、新しい入力が入力されるたびに QR コードを変更しますqrcode
創造された。それはQRCodeCanvas
コンポーネントを呼び出し、QR コードをカスタマイズしてブラウザーで表示できるようにするいくつかの使用可能なプロンプトを渡します。コンポーネントでの props の使用について詳しくは、ドキュメントをご覧ください。 <button>
ユーザー入力がデータを受け取るまで、要素は無効になりますの中に
src
フォルダー、スタイルシートの作成、 styles.css
アプリの視覚的な魅力を担当次のコードをコピーして貼り付けます。
/* src/styles.css */
*, *:before, *:after { margin: 0 ; padding : 0 ; box-sizing : border-box; } :root { -- font - color : 230 35% 7% ; } body { color : hsl ( var (--font-color)); } img { max-width : 100% ; display : block; } .section { padding : 2em 0 ; display : flex; min-height : 100vh ; align-items : center; } .container { margin -inline: auto; max-width : 75rem ; width : 85% ; } .input__group { display : flex; margin-top : 2em ; } input { width : 100% ; padding : 1em 0.75em ; border : 1px solid #444343 ; border-radius : 3px ; margin-bottom : 2em ; margin-top : 0.75em ; } button { border : unset; background : hsl ( 231 , 77% , 90% ); padding : 1em 0.75em ; color : hsl ( var (--font-color)); cursor : pointer; text-transform : uppercase; font-weight : bold; } @media screen and ( min-width : 768px ) { .section { padding : 0 ; } input { margin : 0 ; } .qrcode__container { display : flex; align-items : center; } .input__group { margin-left : 3em ; } input { margin-bottom : 2em ; margin-top : 0.75em ; font-size : 1rem ; } }
次に、アプリのエントリ ポイントである App.js に QrCode.js ファイルとスタイルシートをインポートします。
// src/App.js
import QrCode from "./components/QrCode" ; import "./styles.css" ; export default function App ( ) { return ( < div className = "section container" >
< QrCode />
</ div >
); }
手順が完了すると、アプリは次のようになります。
ユーザーが生成された QR コードをダウンロードするオプションは、さまざまなユース ケースで役立ちます。コードの印刷から Web サイトへの埋め込みまで、用途は無限です。
に戻る
components/QrCode.js
ファイル、使用するコードベースを更新しましょうrefs
ドキュメント オブジェクト モデル (DOM) ノードにアクセスします。 // src/components/QrCode.js
import { useState, useRef } from "react" ; // other import
const QrCode = () => { const [url, setUrl] = useState( "" ); const qrRef = useRef(); // include this: call the useRef function
... const qrcode = ( < QRCodeCanvas
id = "qrCode"
value = {url}
size = {300}
bgColor = { "# 00ff00 "} level = { " H "} />
); return ( < div className = "qrcode__container" >
< div ref = {qrRef} > {qrcode} </ div > {/* include this */} {/* form input container */} </ div >
); }; export default QrCode;
では、更新してみましょう
downloadQRCode
の機能QrCode.js
QR コードのダウンロード ボタンをクリックし、キャンバスを画像ファイルとして保存できるようにします。 // src/components/QrCode.js
// imports
const QrCode = () => { // state
// useRef
const downloadQRCode = ( e ) => { e.preventDefault(); let canvas = qrRef.current.querySelector( "canvas" ); let image = canvas.toDataURL( "image/png" ); let anchor = document .createElement( "a" ); anchor.href = image; anchor.download = `qr-code.png` ; document .body.appendChild(anchor); anchor.click(); document .body.removeChild(anchor); setUrl( "" ); }; ... return ( < div className = "qrcode__container" >
< div ref = {qrRef} > {qrcode} </ div >
{/* form input container */} </ div >
); }; export default QrCode;
の中に
downloadQRCode
関数では、次のことが行われます。qrcode.react
コンポーネントはDOMでcanvas要素を生成し、コンテンツを動的に作成する機能を提供しますtoDataURL
ファイル形式に設定された指定された型パラメーターを持つメソッド、 image/png
<a>
要素が作成され、 href
ボタンクリックでQRコードをダウンロードする画像に設定 setUrl
フォームの送信時に生成された QR コードの入力をクリアする変数コンポーネント QrCode.js の完全なコード:
import { useState, useRef } from "react" ; import { QRCodeCanvas } from "qrcode.react" ; const QrCode = () => { const [url, setUrl] = useState( "" ); const qrRef = useRef(); const downloadQRCode = ( e ) => { e.preventDefault(); let canvas = qrRef.current.querySelector( "canvas" ); let image = canvas.toDataURL( "image/png" ); let anchor = document .createElement( "a" ); anchor.href = image; anchor.download = `qr-code.png` ; document .body.appendChild(anchor); anchor.click(); document .body.removeChild(anchor); setUrl( "" ); }; const qrCodeEncoder = ( e ) => { setUrl(e.target.value); }; const qrcode = ( < QRCodeCanvas
id = "qrCode"
value = {url}
size = {300}
bgColor = { "# 00ff00 "} level = { " H "} />
); return ( < div className = "qrcode__container" >
< div ref = {qrRef} > {qrcode} </ div >
< div className = "input__group" >
< form onSubmit = {downloadQRCode} >
< label > Enter URL </ label >
< input
type = "text"
value = {url}
onChange = {qrCodeEncoder}
placeholder = "https://hackernoon.com"
/>
< button type = "submit" disabled = {!url} >
Download QR code </ button >
</ form >
</ div >
</ div >
); }; export default QrCode;
アプリの最終結果は次のようになります。
このチュートリアルでは、QR コード ジェネレーターを作成するプロセスと、後で使用するためにダウンロードする方法について説明しました。