自認為精通React,這些JavaScript概念你掌握了沒?
本文轉載自公眾號“讀芯術”(ID:AI_Discovery)
想要確定一個人是否掌握React,考考他最新的JavaScript語法就可以了。JavaScript語法對于理解React至關重要,它能讓我們更加容易地閱讀日志,編寫出更簡潔的React代碼。
一旦掌握了一些新的JavaScript語法,編寫React代碼將變得輕而易舉。來看看精通React不可缺少的關鍵概念吧!
箭頭功能
箭頭功能非常重要,它讓功能變得更短,更整潔,并且不必擔心this?,F在,React有了hooks API,就可以在任何地方使用箭頭功能了。
例如,可以將箭頭函數與hooks API結合使用,如下所示:
- importReact from "react";
- const App = () => {
- return <divclassName="App">foo</div>;
- };export default App;
在上面的代碼中,使用箭頭函數定義了一個非常簡單的React組件。該代碼僅顯示靜態文本,但是可以通過動態功能輕松地對其進行擴展。
你還可以編寫以下代碼,將hooks添加到應用程序零件中:
- importReact, { useState } from "react";
- const App = () => {
- const [count, setCount] =useState(0); return (
- <div className="App">
- <button onClick={() =>setCount(count => count + 1)}>increment</button>
- <p>{count}</p>
- </div>
- );
- };export default App;
在以上代碼中,有useState作為hooks,用來更新計數狀態。
在onClick prop.中使用該代碼。接著傳入了一個箭頭函數,該函數調用 setCount 功能。在這個代碼里面,還有另一個箭頭功能來更新現有的計數狀態。
筆者認為不必使用this。傳統功能或bind函數可以隨時隨地借助hooks API。hooks API只是變得更簡潔,使用箭頭功能時為我們省去了不少麻煩。
帶箭頭功能hooks API的簡化,使React從基于類的組件過渡到基于函數的組件。
箭頭函數對于操縱數組非常有用,因為數組方法通常會在回調中傳遞,而傳遞回調的優秀方法是使用箭頭函數。例如,如果要過濾項目并在React中顯示它們,可以使用filter和map,方法如下:
- importReact from "react";const users = [
- { user: "foo", active: true},
- { user: "bar", active: false},
- { user: "baz", active: false}
- ];const App = () => {
- return (
- <div className="App">
- {users
- .filter(u => u.active)
- .map((u, i) => (
- <p key={i}>{u.user}</p>
- ))}
- </div>
- );
- };export default App;
在上面的代碼中,有user數組,在應用程序通過調用帶箭頭函數的filter,將active設置為 true。然后通過map,在由filter返回的數組上映射user內部屬性,以在數組中呈現用戶名。接著你就能看到屏幕上顯示“ foo”。
箭頭函數讓代碼簡短明了,你可以永遠不必在代碼中寫function這個詞或者處理this這個值。
默認參數
默認參數可以在代碼中使用默認值,將參數添加到函數中。在React代碼中,大多使用默認參數以及帶有對象參數的解構語法,它可以將屬性分解為變量并有選擇地使用。
例如,可以將默認參數寫入代碼,如下所示:
- importReact from "react";const Greeting = ({
- greeting = "hello",
- firstName = "jane",
- lastName = "smith"
- }) => (
- <p>
- {greeting} {firstName} {lastName}
- </p>
- );const App = () => {
- return <Greetinggreeting="hi" />;
- };export default App;
箭頭函數,解構和默認參數是JavaScript功能中最有用的兩個功能,可以看到,React代碼被大大精簡了,可讀性也增強了。你學會了嘛?



























