在 React.js 中建立函式式元件
讓我們看看如何建立一個簡單的 React 函式式元件
元件是 React 庫的構建塊。元件有兩種型別。
- 有狀態元件
- 無狀態元件
有狀態元件有一個本地狀態物件,可以在內部進行操作。
無狀態元件沒有本地狀態物件,但我們可以在其中使用 React hook 新增一些狀態。
建立一個簡單的 ES6 函式
const player = () => { }
這裡我們使用 const 關鍵字作為函式名,以便它不會意外地被修改。讓我們新增一個帶有某些 jsx 程式碼的 return 語句。
const player = () => { return ( <p>I'm a Player</p> ); }
要在 JavaScript 檔案中使用 jsx,我們需要像下面這樣匯入 React
import React from 'react'; const player = () => { return ( <p>I'm a Player</p> ); }
最後,我們需要匯出此函式
export default player;
現在,我們可以使用下面的匯入語句使用此函式式元件。
實際檔案的路徑可能需要根據相對位置進行更改。
import Player from './Player'
如果您注意到,上面的匯入語句中沒有提到副檔名。這是因為構建工作流預設情況下會自動將其視為 js 或 jsx 檔案型別。如果檔案型別不同,則也需要提及副檔名。
此 Player 函式式元件可以在 jsx 元素中使用,例如:
<Player/>
此函式式元件可以在任何地方使用,也可以多次使用。它是一個可重用的元件。
新增動態內容
我們有一個下面的 Player 元件
import React from 'react'; const player = () => { return ( <p>I'm a Player</p> ); } export default player;
Player 元件匯入到 app.js 檔案中
import React from 'react'; import logo from './logo.svg'; import './App.css'; import Player from './Player' function App() { return ( <div className="App"> <Player/> <Player/> <Player/> </div> ); } export default App;
現在,假設我們想為每個玩家顯示一些隨機分數,我們可以這樣做:
import React from 'react'; const player = () => { return ( <p>I'm a Player: My score {Math.floor(Math.random() * 50)}</p> ); } export default player;
儲存檔案後,從專案目錄的終端執行 npm start。
要在 jsx 中新增動態內容,我們可以在 {} 花括號內執行此操作。
讓我們看看如何向函式式元件新增屬性或特性
import React from 'react'; import './App.css'; import Player from './Player' function App() { return ( <div className="App"> <Player name="Smith" score="100"/> <Player name="David" score="99">Plays for Australia </Player> <Player name="Phil" score="80"/> </div> ); } export default App;
我們可以像上面一樣向 Player 元素新增屬性。要訪問為 Player 定義的函式式元件中的屬性,我們需要像下面這樣傳遞一個引數。
import React from 'react'; const player = (props) => { return ( <p>I'm a Player: My name {props.name} and my score is {props.score}</p> ); } export default player;
函式的引數名稱可以不同,但標準是使用 props 作為其名稱。我們使用 props.name 和**props.score 在 {} 花括號內**訪問屬性
訪問 JSX 元素的子元素
我們在 David 的 player 上有一個 children 屬性,我們可以像下面這樣訪問它:
import React from 'react'; const player = (props) => { return ( <div> <p>I'm a Player: My name {props.name} and my score is {props.score}</p> {props.children} </div> ); } export default player;
{props.children} 屬性使我們能夠訪問該文字。