# ⚪️React を基礎から理解する
# 🔶 React API とは
React API とは、React が提供する機能のことです。React API は、React のコンポーネントを作成するために必要な機能を提供します。
# 🔶 React API の種類
React API には、以下の種類があります。
React.createElement()
React.createElement(type, [props], [...children])
- 用来创建 React 元素
- React の要素は、一度作成すると変更することができず、新しい要素を作成してレンダリングすることしかできない。
ReactDOM.createRoot()
createRoot(container[, options])
- 用来创建 React 的根容器,容器用来放置 React 元素
ReactDOM.render()
root.render(element)
- 用来将 React 元素渲染到根元素中
- 根元素中所有的内容都会被删除,被 React 元素所替换
- 当重复调用 render()时,React 会将两次的渲染结果进行比较,
- 它会确保只修改那些发生变化的元素,对 DOM 做最少的修改
# ▫️ React.createElement
React 要素を作成するためのメソッドで、DOM 要素ではなく React 要素を生成します。
DOM 要素は最終的にページに表示される要素であり、React 要素は実際に操作する要素です。
両者は仮想 DOM を介して操作され、相互に関連しています。
原則として、React 要素を操作する際には、原生の DOM 要素を直接操作せず、React の仮想 DOM 構造を壊さないように心がけるべきです。
React.createElement
関数の戻り値は React 要素であり、React 内の仮想 DOM 構造において操作されます。React でのイベントはキャメルケースで表記されるべきであり、例えば、onClick、onMouseOver、onMouseOut などがあります。
React
要素は、type、props、children の 3 つのプロパティを持つオブジェクトである。- type: string | function
- props: object
- children: ReactElement | string | number
- return: ReactElement
要素の命名規則:
- 要素の名前: HTML タグは小文字である必要があり、React では大文字はコンポーネントとして解釈されます。
- 要素のプロパティ: オブジェクトで、キーがプロパティの名前、値がプロパティの値です。
- 要素の子要素: 1 つ以上の子要素で、テキスト、または要素、または要素の配列が可能です。
注意:React において、イベントの設定と属性の設定は異なります。イベントの設定時には、属性名をキャメルケースに変更する必要があります。例えば、
onClick
はonclick
ではなくonClick
となります。これは、ネイティブイベントと React イベントを区別するためであり、そのため React イベントの属性名はキャメルケースである必要があります。React において、
onClick
はコードを受け取るのではなく、関数を受け取ります。これは、onClick
がトリガーされたときに関数が実行されることを意味します。onClick={() => alert("click me")}
のように書くと、レンダリング時に即座に実行されず、クリック時にのみ実行されます。onClick={() => alert("click me")}
のように直接書くと、onClick
にはalert("click me")
の戻り値が代入され、レンダリング時に実行されてしまいます。これを避け、クリック時に実行されるようにするためには、アロー関数を使用することが適切です。const div = React.createElement('div', {}, button)
可以在子元素裡直接放 button 進去
<div id="root"></div>;
.....
//create a react element
const button = react.createElement("button", {
id: "btn",
type:'button',
className:'btn',
onClick=()=>{alert('clicked')}
}, "Click me");
//get the root element, 就是把dom元素轉換成react裏的根元素, 這樣才能render, 這裏的rootElement就是一個dom元素
const rootElement = document.getElementById("root");
//render the react element into the root element
ReactDOM.render(button, rootElement);
# ▫️ReactDOM.createRoot
ReactDOM.createRoot
関数は、React の根要素を作成するための関数です。
# ▫️ReactDOM.render
ReactDOM.render
関数は、React 要素をレンダリングするための関数です。