iT邦幫忙

2022 iThome 鐵人賽

DAY 20
0
Modern Web

Dear React 修煉之路系列 第 20

(D-20) Dear React 修煉之路:React | useContext -3

  • 分享至 

  • xImage
  •  

這幾天學習了useContext,認為它的用法稍微有點困難,所以今天我想再多練習一天,useContext第三篇繼續記錄練習過程Q-Q

這邊要將 User1 Component 中的 useState資訊傳遞給 User5 的 Component 來使用
為了不讓中間層級的Components一層一層傳遞資料,要使用 useContext 來傳遞

在provider的 value 中可以放入在最高層管理的狀態,可以是一般常數、狀態、方法等等

import { useState, createContext, useContext } from "react";

const UserContext = createContext();

function User1() {
  const [user, setUser] = useState("User no1");

  return (
    <UserContext.Provider value={user}>
      <h1>{`Hello ${user}!`}</h1>
      <User2 />
    </UserContext.Provider>
  );
}

function User2() {
  return (
    <>
      <h1>User 2</h1>
      <User3 />
    </>
  );
}

function User3() {
  return (
    <>
      <h1>User 3</h1>
      <User4 />
    </>
  );
}

function User4() {
  return (
    <>
      <h1>User 4</h1>
      <User5 />
    </>
  );
}

function User5() {
  const user = useContext(UserContext);

  return (
    <>
      <h1>User 5</h1>
      <h2>{`Hello ${user} !!!!`}</h2>
    </>
  );
}

什麼時候要用到 useContext
答案是不一定。根據情境不同來判斷是否需要使用,因為 context 有一個很大問題是每當它資料更新,底下所有子元件都會重新渲染。
所以比較常使用到的情境會是不常變動的值,例如:主色、login、權限(使用者狀態)、多國語系等等


上一篇
(D-19) Dear React 修煉之路:React | useContext -2
下一篇
(D-21) Dear React 修煉之路:Router
系列文
Dear React 修煉之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言