React入門 8:React Hooks API

Attention:Hooks are a new addition in React 16.8.

所以使用 Hooks 時要注意一下 React 的版本哦。

Basic Hooks

1. CodeSandBox的使用

使用 CodeSandBox 可以在線創(chuàng)建 React 應用。

小技巧:

  • 創(chuàng)建了 React 應用后,需修改版本號時可直接在 package.json 里修改,并保存,就會自動加載了。
  • 命令行面板上 輸入 npm info react versions 可查詢 React 版本。

2. useState 的使用

首先要引入 useState:

import {useState} from "react"

useState 的使用:

const [state, setState] = useState(initialState);

其中,state表示state的值;setState表示更新 state 的函數;useState返回一個數組,數組的第一項表示state的值;initialState表示 state 的初始值。

示例代碼:

function App() {
  
  const [count, setCount] = useState(0)

  const add = ()=>{
    setCount(count + 1)
  }

  const minus = ()=>{
    setCount(count - 1)
  }

  return (
    <div className="App">
      <div>
        <span className="value">{count}</span>
      </div>
      <button onClick={add}>加1</button>
      <button onClick={minus}>減1</button>
    </div>
  );
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

原本函數組件是沒有狀態(tài)的,但自從有了 Hooks,函數組件可以有狀態(tài)了。

3. useState的更多例子

function App() {
  const [user, setUser] = useState({
    name: "janice",
    age: 18,
    hobbies: ["reading", "game", "coding", "basketball"]
  });

  const addHobbies = () => {
    let newHobbies = Math.random();
    setUser({
      ...user,
      hobbies: [...user.hobbies, newHobbies]
    });
  };

  const delHobbies = () => {
    user.hobbies.splice(1, 1);
    setUser({
      ...user,
      hobbies: user.hobbies
    });
  };

  return (
    <div className="App">
      <div>
        {user.name} , {user.age}
      </div>
      <div>{user.hobbies.join(" , ")}</div>
      <button onClick={addHobbies}>增加愛好</button>
      <button onClick={delHobbies}>刪除愛好</button>
    </div>
  );
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

4. useEffect的使用

使用 useEffect 處理副作用,下面舉例說明一下什么是副作用:

function f1() {}       // f1是沒作用的函數

function f2() {         // f2是有副作用的函數
    console.log(1)
}

function f3(a, b) {   // f3是純函數,又稱沒有副作用的函數
    return a + b
}
  • 在 函數 f2 中,依賴了 console.log(1), 依賴的東西可能會被修改,有可能會產生意外的結果。
    依賴了不知從哪來的東西的函數就是有副作用的函數。
  • 函數 f3 是純函數,又稱沒有副作用的函數,即不依賴外部不知從哪來的東西。
import React, { useState, useEffect } from 'react';

function Example() {
  const [count, setCount] = useState(0);

  //把有副作用的函數放在useEffect里
  useEffect(() => {
    document.title = `You clicked ${count} times`;
  });

  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={() => setCount(count + 1)}>
        Click me
      </button>
    </div>
  );
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • React是現(xiàn)在最流行的前端框架之一,它的輕量化,組件化,單向數據流等特性把前端引入了一個新的高度,現(xiàn)在它又引入的...
    老鼠AI大米_Java全棧閱讀 5,854評論 0 26
  • 你還在為該使用無狀態(tài)組件(Function)還是有狀態(tài)組件(Class)而煩惱嗎?——擁有了hooks,你再也不需...
    米亞流年閱讀 964評論 0 5
  • 你還在為該使用無狀態(tài)組件(Function)還是有狀態(tài)組件(Class)而煩惱嗎?——擁有了hooks,你再也不需...
    水落斜陽閱讀 82,465評論 11 100
  • 主要介紹 useState useEffect useReducer useContext 用法 你還在為...
    叫我蘇軾好嗎閱讀 27,633評論 3 41
  • 叢培國 機構:叢迪服裝公司 【日精進打卡第545天】 【知~學習】 《六項精進》0遍 共61遍 《大學》0遍 共6...
    叢培國閱讀 146評論 0 0

友情鏈接更多精彩內容