ディープ・ダイブ
JSXを深く知るためには、JSXとは何かを明確にする必要があります.JSXの完全な形式はJavaScript XMLです.JSXコンセプト全体をクリアするには、JSXとは何かを議論します.
JSXとは
JSXはXML/HTMLのような構文で使用される構文です.JavaScript/ReplyコードでXML/HTMLのようなテキストが共存できるようにJavaScriptを拡張するJS.
なぜJSXか
JSXではJavaScriptでHTML要素を記述し、任意のcreateElement ()および/またはappendChild ()メソッドを使用しないでDOMに配置できます.HTMLのタグを反応要素に変換します.
例えば、JSXでは以下のようなコードを書くことができます.
JSXの表現
行を挿入する
JSXでは、括弧括弧
式は、反応変数、またはプロパティ、または他の有効なJavaScript式です.JSXは式を実行し、結果を返します.
HTMLのブロックを挿入する
HTML行のブロックを複数行に挿入するには、HTMLブロックを括弧内に配置する必要があります.
反応要素型の指定
JSXタグの最初の部分は、Response要素の型を決定します.
資本型は、JSXタグが反応コンポーネントを参照していることを示します.
反応は範囲内になければならない
JSXは
例えば、このコードではインポートの両方が必要です.
ユーザー定義のコンポーネントを資本化する必要があります
大文字で命名を命じることを勧めます.小文字から始まるコンポーネントが宣言されている場合、JSXで使用する前に、それを資本化変数に割り当てる必要があります.
たとえば、このコードは予想通りに実行されません.
実行時の型の選択
一般式を反応要素型として使用できません.一般的な式を使用して要素の型を示す場合は、まず最初に資本化された変数に代入しなければなりません.
例えば、
JSXにおける小道具
JSXで小道具を指定する方法はいくつかあります
道具としてのJavaScript表現
JavaScript式はプロップとして
文字列リテラル
文字列リテラルを小文字として渡すことができます.これらの2つのJSX式は等価です.
属性を広げる
私たちが既に
日本の子供たち
子を渡すにはいくつかの方法があります.
文字列リテラル
開始タグと終了タグの間に文字列を置くことができます.これはビルトインのHTML要素の多くに役立ちます.例えば、
JSXチルドレン
子供たちとしてより多くのJSX要素を提供することができます.これは入れ子になったコンポーネントを表示するときに便利です.
子供としてのJavaScript表現
JavaScriptの式をJSXの子として渡すことは、
子供としての機能
通常、JSXに挿入されたJavaScript式は、文字列、反応要素、またはそれらのリストに評価されます.
booleans , null , undefinedは無視される
JSXとは
JSXはXML/HTMLのような構文で使用される構文です.JavaScript/ReplyコードでXML/HTMLのようなテキストが共存できるようにJavaScriptを拡張するJS.
なぜJSXか
JSXではJavaScriptでHTML要素を記述し、任意のcreateElement ()および/またはappendChild ()メソッドを使用しないでDOMに配置できます.HTMLのタグを反応要素に変換します.
例えば、JSXでは以下のようなコードを書くことができます.
const firstElement = <h1>My first JSX</h1>;
ReactDOM.render(firstElement, document.getElementById('root'));
JSXなしで:const firstElement= React.createElement('h1', {}, 'I do not use JSX!');
ReactDOM.render(firstElement, document.getElementById('root'));
上記から、我々は、JSXの反応アプリケーションのコードを書くと非常に簡単ですが見ることができます.JSXの表現
行を挿入する
JSXでは、括弧括弧
{ }
の内部で式を書くことができます.式は、反応変数、またはプロパティ、または他の有効なJavaScript式です.JSXは式を実行し、結果を返します.
const text = <h1> This is an expression in JSX </h1>
HTMLのブロックを挿入する
HTML行のブロックを複数行に挿入するには、HTMLブロックを括弧内に配置する必要があります.
const list= (
<ul>
<li>Apples</li>
<li>Bananas</li>
<li>Cherries</li>
</ul>
);
反応要素型の指定
JSXタグの最初の部分は、Response要素の型を決定します.
資本型は、JSXタグが反応コンポーネントを参照していることを示します.
反応は範囲内になければならない
JSXは
React.createElement
への呼び出しにコンパイルされているので、React
ライブラリは常にJSXコードからスコープ内になければなりません.例えば、このコードではインポートの両方が必要です.
import React from 'react';
import CustomButton from './CustomButton';
function WarningButton() {
// return
React.createElement(CustomButton, {color: 'red'}, null); return <CustomButton color="red" />;
}
ユーザー定義のコンポーネントを資本化する必要があります
大文字で命名を命じることを勧めます.小文字から始まるコンポーネントが宣言されている場合、JSXで使用する前に、それを資本化変数に割り当てる必要があります.
たとえば、このコードは予想通りに実行されません.
import React from 'react';
// This is a component and should be capitalized:function Hello(props) { This use of <div> is legitimate because div is a valid HTML tag:
return <div>Hello {props.toWhat}</div>;
}
function HelloWorld() {
// React knows <Hello /> is a component because it's capitalized.
return <Hello toWhat="World" />;}
実行時の型の選択
一般式を反応要素型として使用できません.一般的な式を使用して要素の型を示す場合は、まず最初に資本化された変数に代入しなければなりません.
例えば、
import React from 'react';
import { PhotoStory, VideoStory } from './stories';
const components = {
photo: PhotoStory,
video: VideoStory
};
function Story(props) {
// JSX type can be a capitalized variable.
const SpecificStory = components[props.storyType];
return <SpecificStory story={props.story} />;}
JSXにおける小道具
JSXで小道具を指定する方法はいくつかあります
道具としてのJavaScript表現
JavaScript式はプロップとして
React
で囲むことができます.例えば、このJSXでは<MyComponent foo={1 + 2 + 3 + 4} />
文字列リテラル
文字列リテラルを小文字として渡すことができます.これらの2つのJSX式は等価です.
<MyComponent message="hello world" />
<MyComponent message={'hello world'} />
属性を広げる
私たちが既に
CustomButton
をオブジェクトとして持っていて、私たちがJSXでそれを通過したいならば、我々は全体の小道具オブジェクトを通過するために「スプレッド」演算子として{}
を使うことができます.これらの2つのコンポーネントは等価です.function App1() {
return <Greeting firstName="Ben" lastName="Hector" />;
}
function App2() {
const props = {firstName: 'Ben', lastName: 'Hector'};
return <Greeting {...props} />;}
日本の子供たち
子を渡すにはいくつかの方法があります.
文字列リテラル
開始タグと終了タグの間に文字列を置くことができます.これはビルトインのHTML要素の多くに役立ちます.例えば、
<MyComponent>Hello world!</MyComponent>
JSXチルドレン
子供たちとしてより多くのJSX要素を提供することができます.これは入れ子になったコンポーネントを表示するときに便利です.
<MyContainer>
<MyFirstComponent />
<MySecondComponent />
</MyContainer>
子供としてのJavaScript表現
JavaScriptの式をJSXの子として渡すことは、
props
の範囲内でそれを囲むことによって許可されます.例えば、これらの式は等価です.<MyComponent>foo</MyComponent>
<MyComponent>{'foo'}</MyComponent>
子供としての機能
通常、JSXに挿入されたJavaScript式は、文字列、反応要素、またはそれらのリストに評価されます.
function Repeat(props) {
let items = [];
for (let i = 0; i < props.numTimes; i++) { items.push(props.children(i));
}
return <div>{items}</div>;
}
function ListOfTenThings() {
return (
<Repeat numTimes={10}>
{(index) => <div key={index}>This is item {index} in the list</div>} </Repeat>
);
}
カスタムコンポーネントに渡された子は、何かをすることができます.この使用法は一般的ではありませんが、JSXが可能なものを伸ばす場合は動作します.booleans , null , undefinedは無視される
...
、props. children
、{}
、およびfalse
は有効な子供です.彼らは単にレンダリングしないでください.これらのJSX式はすべて同じものになります.<div />
<div></div>
<div>{false}</div>
<div>{null}</div>
<div>{undefined}</div>
<div>{true}</div>
If You are new to the JSX concept more's here.
Reference
この問題について(ディープ・ダイブ), 我々は、より多くの情報をここで見つけました https://dev.to/shamantasristy/a-deep-dive-in-jsx-44pjテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol