ホームページ ウェブフロントエンド jsチュートリアル React.jsの使い方は? React.js の簡単な使い方の紹介 (例付き)

React.jsの使い方は? React.js の簡単な使い方の紹介 (例付き)

Sep 11, 2018 pm 03:43 PM
javascript

この記事では主に react.js の使用法について説明し、react が思っているほど難しくないことを皆さんに理解してもらいます。それでは、この記事の具体的な内容を見てみましょう

1、Reactはすべてコンポーネント化されています

Reactは、再利用可能なコンポーネントの概念に基づいて設計されています。小さなコンポーネントを定義し、それらを組み合わせて大きなコンポーネントを形成します。

大小に関係なく、たとえ異なるプロジェクトであっても、すべてのコンポーネントは再利用可能です。

React コンポーネントの最も単純な形式は、単なる通常の JavaScript 関数です:

function Button (props) {
  // 这里返回一个 DOM元素,例如:
  return <buttontype="submit">{props.label}</button>;
}
// 将按钮组件呈现给浏览器
ReactDOM.render(<Buttonlabel="Save" />, mountNode)
ログイン後にコピー

例 1: 上記のコードを編集し、Ctrl+Enter を押して実行します (翻訳者注: この関数の翻訳は当面利用できません。この機能を使用するには原文を参照してください。以下同様)

括弧ラベル内のボタンについては後ほど説明します。今は心配しないでください。 ReactDOMについても後ほど説明しますが、この例と以下の例をすべてテストしたい場合は上記のrender関数が必要です。 (React が引き継いで制御するのは、ターゲット DOM 要素である ReactDOM.render の 2 番目のパラメーターです)。 jsComplete REPL では、特別な変数 mountNode を使用できます。

例 1 注:

コンポーネント名の最初の文字は大文字で、Buttonとなります。これは、HTML 要素と React 要素の混合を扱うことになるため必要です。小文字の名前は HTML 要素用に予約されています。実際、React コンポーネントに「button」という名前を付けると、ReactDOM がこの関数を無視し、通常の空の HTML ボタンとしてレンダリングすることがわかります。

すべてのコンポーネントは、HTML 要素と同様に、属性のリストを受け取ります。 React では、このリストをプロパティと呼びます。ただし、関数には好きな名前を付けることができます。

上記の Button 関数コンポーネントの戻り出力では、奇妙なことに HTML のように見えるコードを書きました。これは実際には JavaScript や HTML ではなく、正直に言うと React.js でもありません。しかし、非常に人気があるため、React アプリケーションのデフォルトになっています。これは JSX と呼ばれ、JavaScript 拡張機能です。 JSX も妥協です。上記の関数で他の HTML 要素を返してみて、それらがどのようにサポートされるかを確認してください (たとえば、テキスト入力要素を返すなど)。

2、JSXは何を出力しますか?

上記の例1は、次のようにJSXを使わずに純粋なReact.jsで書くことができます:

function Button (props) {
  return React.createElement(
    "button",
    { type: "submit" },
    props.label
  );
} 
// 要使用 Button,你可以这么做
ReactDOM.render(
  React.createElement(Button, { label:"Save" }),
  mountNode
);
ログイン後にコピー

例2: No J SX反応を書くコンポーネント

React

トップレベル API では、createElement 関数がメイン関数です。これは、学習する必要がある 7 つの API のうちの 1 つです。 React の API は非常に小さいです。

DOM

自体にタグ名で指定された要素を作成する document.createElement 関数があるのと同じように、React の createElement 関数は document.createElement と同じ機能を持つ高度な関数ですが、 React コンポーネントを表す要素。上記の例 2 で Button コンポーネントを使用する場合は、後者を使用します。

document.createElement

とは異なり、React の createElement は、作成された要素の子要素を表す 2 番目のパラメーターを受け取った後に動的パラメーターを受け取ります。したがって、createElement は実際にツリーを作成します。

これはその例です:

const InputForm = React.createElement(
  "form",
  { target: "_blank", action:"https://google.com/search" },
  React.createElement("p",null, "Enter input and click Search"),
  React.createElement("input", {className: "big-input" }),
  React.createElement(Button, { label:"Search" })
);
// InputForm 使用 Button组件,所以我们需要这样做:
function Button (props) {
  return React.createElement(
    "button",
    { type: "submit" },
    props.label
  );
}
// 然后我们可以通过 .render方法直接使用 InputForm
ReactDOM.render(InputForm, mountNode);
ログイン後にコピー

例 3:React创建元素的 API

上面例子中的一些事情值得注意:

InputForm 不是一个 React组件;它仅仅是一个 React 元素。这就是为什么我们可以在ReactDOM.render 中直接使用它并且可以在调用时不使用 的原因。(想看更多就到PHP中文网React参考手册栏目中学习)

React.createElement函数在前两个参数后接收了多个参数。从第3个参数开始的参数列表构成了创建元素的子项列表。

我们可以嵌套 React.createElement调用,因为它是 JavaScript。

当这个元素不需要属性时,React.createElement的第二个参数可以为空或者是一个空对象。

我们可以在 React 组件中混合HTML 元素。你可以将 HTML 元素作为内置的 React组件。

React 的 API试图和 DOM API 一样,这就是为什么我们在 input 元素中使用 className 代替 class 的原因。我们都希望如果 React 的 API 成为 DOM API 本身的一部分,因为,你知道,它要好得多。

上述的代码是当你引入 React 库的时候浏览器是怎样理解的。浏览器不会处理任何 JSX 业务。然而,我们更喜欢看到和使用 HTML,而不是那些 createElement 调用(想象一下只使用document.createElement 构建一个网站!)。这就是 JSX 存在的原因。取代上述调用 React.createElement 的方式,我们可以使用一个非常简单类似于HTML 的语法:

const InputForm =
  <form target="_blank"action="https://google.com/search">
    <p>Enter input and clickSearch</p>
    <inputclassName="big-input" name="q" />
    <Buttonlabel="Search" />
  </form>;
// InputForm “仍然”使用 Button 组件,所以我们也需要这样。
// JXS 或者普通的表单都会这样做
function Button (props) {
  // 这里返回一个 DOM元素。例如:
  return <buttontype="submit">{props.label}</button>;
}
// 然后我们可以直接通过 .render使用 InputForm
ReactDOM.render(InputForm, mountNode);
ログイン後にコピー

例 4:为什么在 React中 JSX 受欢迎(和例3 相比)

注意上面的几件事:

这不是 HTML 代码。比如,我们仍然可以使用 className 代替 class。

我们仍在考虑怎样让上述的 JavaScript看起来像是 HTML。看一下我在最后是怎样添加的。

我们在上面(例 4)中写的就是 JSX。然而,我们要将编译后的版本(例 3)给浏览器。要做到这一点,我们需要使用一个预处理器将 JSX 版本转换为 React.createElement 版本。

这就是 JSX。这是一种折中的方案,允许我们用类似 HTML 的语法来编写我们的 React 组件,这是一个很好的方法。

“Flux” 在头部作为韵脚来使用,但它也是一个非常受欢迎的应用架构,由 Facebook推广。最出名的是 Redux,Flux 和 React 非常合适。

JSX,可以单独使用,不仅仅适用于 React

3、 你可以在 JavaScript的任何地方使用 JSX

在 JSX 中,你可以在一对花括号内使用任何 JavaScript 表达式。

const RandomValue = () =>
  <p>
    { Math.floor(Math.random() * 100)}
  </p>;
// 使用:
ReactDOM.render(<RandomValue />,mountNode);
ログイン後にコピー

例 5:在 JSX中使用 JavaScript 表达式

任何 JavaScript 表达式可以直接放在花括号中。这相当于在 JavaScript 中插入 ${} 模板。

这是 JSX 内唯一的约束:只有表达式。例如,你不能使用 if 语句,但三元表达式是可以的。

JavaScript 变量也是表达式,所以当组件接受属性列表时(不包括 RandomValue组件,props 是可选择的),你可以在花括号里使用这些属性。我们在上述(例 1)的 Button 组件是这样使用的。

JavaScript 对象也是表达式。有些时候我们在花括号中使用 JavaScript对象,这看起来像是使用了两个花括号,但是在花括号中确实只有一个对象。其中一个用例就是将 CSS 样式对象传递给响应中的特殊样式属性:

const ErrorDisplay = ({message}) =>
  <p style={ { color: &#39;red&#39;,backgroundColor: &#39;yellow&#39; } }>
    {message}
  </p>;
// 使用
ReactDOM.render(
  <ErrorDisplay
    message="These aren&#39;t thedroids you&#39;re looking for"
  />,
  mountNode
);
ログイン後にコピー

例 6:一个对象传递特殊的 React样式参数

注意我解构的只是在属性参数之外的信息。这只是 JavaScript。还要注意上面的样式属性是一个特殊的属性(同样,它不是 HTML,它更接近 DOM API)。我们使用一个对象作为样式属性的值并且这个对象定义样式就像我们使用 JavaScript 那样(我们可以这样做)。

你可以在 JSX 中使用 React 元素。因为这也是一个表达式(记住,一个 React 元素只是一个函数调用):

const MaybeError = ({errorMessage}) =>
  <p>
    {errorMessage &&<ErrorDisplay message={errorMessage} />}
  </p>;
// MaybeError 组件使用 ErrorDisplay组件
const ErrorDisplay = ({message}) =>
  <p style={ { color: &#39;red&#39;,backgroundColor: &#39;yellow&#39; } }>
    {message}
  </p>;
// 现在我们使用 MaybeError组件:
ReactDOM.render(
  <MaybeError
    errorMessage={Math.random() >0.5 ? &#39;Not good&#39; : &#39;&#39;}
  />,
  mountNode
);
ログイン後にコピー

例 7:一个 React元素是一个可以通过 {} 使用的表达式

上述 MaybeError 组件只会在有errorMessage 传入或者另外有一个空的 p 才会显示 ErrorDisplay 组件。React 认为 {true}、 {false}

{undefined} 和 {null} 是有效元素,不呈现任何内容。

我们也可以在 JSX 中使用所有的JavaScript 的集合方法(map、reduce 、filter、 concat 等)。因为他们返回的也是表达式:

const Doubler = ({value=[1, 2, 3]}) =>
  <p>
    {value.map(e => e * 2)}
  </p>;
// 使用下面内容 
ReactDOM.render(<Doubler />, mountNode);
ログイン後にコピー

例 8:在 {}中使用数组

请注意我是如何给出上述 value 属性的默认值的,因为这全部都只是 JavaScript。注意我只是在 p 中输出一个数组表达式。React 是完全可以的。它只会在文本节点中放置每一个加倍的值。

4、 你可以使用 JavaScript类写 React 组件

简单的函数组件非常适合简单的需求,但是有的时候我们需要的更多。React也支持通过使用 JavaScript 类来创建组件。这里 Button 组件(在例 1 中)就是使用类的语法编写的。

class Button extends React.Component {
  render() {
    return<button>{this.props.label}</button>;
  }
}
// 使用(相同的语法)
ReactDOM.render(<Buttonlabel="Save" />, mountNode);
ログイン後にコピー

例 9:使用 JavaScript类创建组件

类的语法是非常简单的:定义一个扩展的 React.Component类(另一个你需要学习的 React 的顶级 API)。该类定义了一个单一的实例函数 —— render(),并使函数返回虚拟 DOM 对象。每一次我们使用基于类的 Button 组件(例如,通过

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 Dec 17, 2023 pm 02:54 PM

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー Dec 17, 2023 pm 05:30 PM

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 Dec 17, 2023 am 09:39 AM

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 Dec 17, 2023 pm 12:09 PM

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 Dec 17, 2023 pm 05:13 PM

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

JavaScriptでinsertBeforeを使用する方法 JavaScriptでinsertBeforeを使用する方法 Nov 24, 2023 am 11:56 AM

使用法: JavaScript では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

JavaScript で HTTP ステータス コードを簡単に取得する方法 JavaScript で HTTP ステータス コードを簡単に取得する方法 Jan 05, 2024 pm 01:37 PM

JavaScript で HTTP ステータス コードを取得する方法の紹介: フロントエンド開発では、バックエンド インターフェイスとの対話を処理する必要があることが多く、HTTP ステータス コードはその非常に重要な部分です。 HTTP ステータス コードを理解して取得すると、インターフェイスから返されたデータをより適切に処理できるようになります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法と、具体的なコード例を紹介します。 1. HTTP ステータス コードとは何ですか? HTTP ステータス コードとは、ブラウザがサーバーへのリクエストを開始したときに、サービスが

See all articles