【React】二.JSX

目次

 2. JSX

JSXの基本的な使い方

 jsxの使用手順

JSX での JavaScript 式の使用

JS式を埋め込む

注意点

JSX を使用した条件付きレンダリング

問題記録

JSXリストのレンダリング

JSXスタイルの処理

要約する


 2. JSX

JSXの基本的な使い方

  1. createElement()の問題
  • 面倒で簡潔ではない
  • 記述された構造が直観的に理解できない
  • エレガントではなく、ユーザーエクスペリエンスが低い

JavaScript XMLの略で、JavaScriptコードでXML(HTML)形式のコードを記述することを意味します。

利点: 宣言構文はより直観的であり、HTML と同じ構造をしているため、学習コストが削減され、開発効率が向上します。

JSX は React の中核となるコンテンツです

 jsxの使用手順

1. jsx を使用して反応要素を作成する

const title=<h1> こんにちは jsx</h1>

2. 作成した反応要素をレンダリングします

ReactDOM.render(タイトル,ルート)

JSX での JavaScript 式の使用

JS式を埋め込む

データはJSに保存されます

構文: {JavaScript 式}

const name='Jack'
const dv=(
<div>你好,我叫:{name}</div>
)
import React from 'react'

import ReactDOM from 'react-dom'

const name = 'user'
const age=8
const title = (
    <h1>
        hello ,{name},年龄:{ age}
    </h1>
)
ReactDOM.render(title,document.getElementById('root'))

 

注意点

1. React 要素の属性名にはキャメルケースの名前が使用されます

2. 特別な属性名: class-->className 

                        の場合--->htmlの場合

                        tabindex---->tabIndex 

3. 子ノードのない React 要素は /> で終わることができます。 

4. 推奨事項: JS に自動的にセミコロンが挿入される罠を避けるために、かっこを使用して JSX をラップします。

import React from 'react'

import ReactDOM from 'react-dom'

const name = 'user'
const age=8
const title = (
    <h1 className='title'>
        hello ,{name},年龄:{age},<span/>
    </h1>
    
)
ReactDOM.render(title,document.getElementById('root'))

JSX を使用した条件付きレンダリング

シーン: ローディングエフェクト

条件付きレンダリング: 条件に基づいて特定の JSX 構造をレンダリングします。

// 2条件渲染
/**
 *if-else实现
 * 通过改变isLoading的true和false来改变样式
 */
const isLoading = true
const loadData = () => {
    if (isLoading) {
        return<div>loading......</div>
    }
    return <div>数据加载完成,此处显示加载后的数据</div>
}
const title = (
    <h1>
        条件渲染:
        {loadData()}
    </h1>
)
ReactDOM.render(title,document.getElementById('root'))

条件付きレンダリングは、if-else三項演算子、または論理 ANDを通じて実行できます。

//三目运算符
const loadData = () => {
    return  isLoading?(<div>loading...</div>):(<div>数据加载完成,此处显示加载后的数据</div>)
    
}

    return isLoading && (<div>loading...</div>)

論理 AND は前の 2 つと同じではありません。論理 AND の表示結果は、スタイルが表示されるかどうかになります。

trueの場合は読み込み中を表示、falseの場合はテキストなし

問題記録

loadData() は定義後にのみ呼び出すことができます

順序が逆の場合は、const の変数昇格がないため、最初に宣言してから呼び出す必要があることが警告されます。

JSXリストのレンダリング

  • データのセットをレンダリングしたい場合は、配列のmap()メソッドを使用する必要があります。
  • 注: リストをレンダリングするときに key 属性を追加する必要があり、key 属性の値は一意である必要があります。
  • 原則: map() によってトラバースされる人は誰でも、その人にキー属性を追加します。
  • 注: インデックス番号をキーとして使用することは避けてください。
import React from 'react'

import ReactDOM from 'react-dom'
//列表渲染
const songs = [
    { id: 1, name: '小苹果' },
    { id: 2, name: '光辉岁月' },
    {id:3,name:'云烟成雨'},
]
const list = (
    <ul>
        {/* {songs.map(item => <li>{item.name}</li>)} */
            songs.map(item => <li key={item.id}>{item.name}</li>)}
    </ul>
)
ReactDOM.render(list,document.getElementById('list1'))

通常はindex.jsエントリファイルのコードのみが表示されますが、新しいjsファイルがある場合はインポートする必要があります。

JSXスタイルの処理

1. インラインスタイル


// 行内样式
<h1 style={
   
   { color: 'red', backgroundColor: 'skyblue' }}>JSX的样式处理</h1>

2. クラス名 - className (推奨)

//类名
const list=(
    <h1 className='title' style={
   
   { color: 'red', backgroundColor: 'skyblue' }}>
        JSX的样式处理
    </h1>
)
ReactDOM.render(list,document.getElementById('root'))

現在の js ファイルにindex.cssをインポートし、cssファイルにスタイルを記述する必要があります。

そして、現在のファイルはreactのjsエントリーファイルではないので、index.jsに現在のjsをインポートします。

要約する

  1. JSX は React の中核となるコンテンツです
  2. JSX とは、React ステートメントを具体化した JS コードで HTML 構造を記述することを意味します。
  3. JSX を埋め込み JS 式、条件付きレンダリング、リスト レンダリングとともに使用して、UI 構造を記述します。
  4. JSX にスタイルを追加するには className を使用することをお勧めします
  5. React は、HTML 機能を強化するホイールを構築するのではなく、JS 言語自体の機能を最大限に活用して UI を作成します。

 

おすすめ

転載: blog.csdn.net/weixin_55355282/article/details/128659190