React 学習共有 (1)

1.JSX構文

JSX は、HTML 構文を JavaScript コードに直接追加し、ブラウザーで実行される前にトランスレーターを介して純粋な JavaScript に変換します。実際の開発では、JSX は製品のパッケージ化段階で純粋な JavaScript にコンパイルされます。これにより副作用は発生せず、コードがより直観的で保守しやすくなります。コンパイル プロセスは、Babel の JSX コンパイラによって実装されます。
React18以前の書き方は以下の通りです。

import React from 'react'
import ReactDOM from 'react-dom'

class App extends React.Component {
    
    
    render() {
    
    
        return (
            <div>11111
                <ul>
                    <li>1</li>
                    <li>2</li>
                    <li>3</li>
                    <li>4</li>
                </ul>
                <div>asdad</div>
            </div>
        )
    }
}

ReactDOM.render(<App />, document.getElementById("root"))

しかし、react18 バージョンを使用すると、このようなエラーが表示されます。

Warning: ReactDOM.render is no longer supported in React 18. Use createRoot instead. Until you switch to the new API, your app will behave as if it's running React 17. Learn more: https://reactjs.org/link/switch-to-createroot

したがって、次のように書き直す必要があります。

import {
    
     createRoot } from 'react-dom/client';
const root = createRoot(document.getElementById('root'));

class App extends React.Component {
    
    
    render() {
    
    
        return (
            <div>11111
                <ul>
                    <li>1</li>
                    <li>2</li>
                    <li>3</li>
                    <li>4</li>
                </ul>
                <div>asdad</div>
            </div>
        )
    }
}
root.render(<App />)

VScode が jSX で HTML タグを表示する方法については、設定するだけで済みます (これらの 5 つの手順で十分です)。
画像の説明を追加してください

画像の説明を追加してください

2. クラスコンポーネントと関数コンポーネント

ES6 の追加により、JavaScript はクラスを定義するためのクラスの使用を直接サポートできるようになります。React がコンポーネントを作成する方法は、使用されるクラスの継承です。現在、ES6 クラスは公式に推奨されている使用方法です。ES6 標準構文を使用して、次のコードを参照してください:
ここでは、Header クラス コンポーネント (01class.js) が公開されています。

import React, {
    
     Component } from 'react'
export default class Header extends Component {
    
    
    render() {
    
    
        return (
            <div>
                <div>我是头部</div>
            </div>
        )
    }
}

こちらは外部に公開するBody関数コンポーネント(02function.js)です

const Body = () => {
    
    
    return (
        <div>我是身体内容</div>
    )
}
export default Body

その後、それをルートコンポーネントのindex.jsに導入するだけで使用できます(コンポーネント名は大文字で始める必要があることに注意してください。そうしないとエラーが報告されます)。

import React from 'react'
import {
    
     createRoot } from 'react-dom/client';

import Header from './01class'
import Body from './02function'

const root = createRoot(document.getElementById('root'));
class App extends React.Component {
    
    
    render() {
    
    
        return (
            <div>
                <ul>
                    <li>1</li>
                    <li>2</li>
                    <li>3</li>
                    <li>4</li>
                </ul>
                <div>asdad</div>
                <Header></Header>
                <Body></Body>
            </div>
        )
    }
}
root.render(<App />)

関数コンポーネントとクラスコンポーネントの違い:
関数コンポーネントはステートレスコンポーネントとも呼ばれ、16.8 以前は状態がありませんでしたが、16.8 以降は状態を書き込むための React フックが導入されました。クラスコンポーネントは状態とプロパティを書き込むことができます。

3. コンポーネント内のスタイル

まず最初に、変数属性を仮想 dom に追加する方法を知る必要があります。また、式を使用して { } に渡す必要があります。これにより、次のことが実現されます。

import React, {
    
     Component } from 'react'
export default class App extends Component {
    
    
    render() {
    
    
        const name = "zhangsan"
        const a = 8
        const b = 9
        return (
            <div>
                {
    
    10 + 20} -- {
    
    name}
                <div>
                    {
    
    a > b ? "aaa" : "bbb"}
                </div>
            </div>
        )
    }
}

式である必要があることに注意してください。
まず、次の形式でオブジェクトを定義できます。

import React, {
    
     Component } from 'react'
export default class App extends Component {
    
    
    render() {
    
    
        const name = "zhangsan"
        const a = 8
        const b = 9
        const obj = {
    
    
            //驼峰式命名
            backgroundColor: "red"
        }
        return (
            <div>
                {
    
    10 + 20} -- {
    
    name}
                <div>
                    {
    
    a > b ? "aaa" : "bbb"}
                </div>
                {
    
    /* 注意{ }不能删去 */}
                <p style={
    
    obj}>2222222222222222</p>
            </div >
        )
    }
}

インライン スタイルを仮想 dom に追加するには、式を使用してスタイル オブジェクトを渡す必要があります。

{
    
    /* 注意这里的两个括号,第一个表示我们在要JSX里插入JS了,第二个是对象的括号 */}
<p style={
    
    {
    
     color: 'red', fontSize: '14px' }}>1111111111111111111</p>

クラスの記述:
React は、各コンポーネントが独立した全体であると考えているため、インライン スタイルを使用することを推奨しています。ほとんどの場合、依然として多くのクラス名を要素に追加しますが、クラスは className として記述する必要があることに注意してください。 (結局のところ、あなたは js のようなコードを書いており、js ルールを受け取ることになり、 class がキーワードであるため)
補足: (class ==> className , for ==> htmlFor(label))

import React, {
    
     Component } from 'react'
import './css/01index.css'
export default class App extends Component {
    
    
    render() {
    
    
        const name = "zhangsan"
        const a = 8
        const b = 9
        const obj = {
    
    
            backgroundColor: "red"
        }
        return (
            <div>
                {
    
    10 + 20} -- {
    
    name}
                <div>
                    {
    
    a > b ? "aaa" : "bbb"}
                </div>
                <p className='active'>333333333333333</p>
            </div >
        )
    }
}

おすすめ

転載: blog.csdn.net/weixin_46824709/article/details/126295884