[30DaysChallenge] React Context API (上)

30DaysChallenge 是自主性每兩天寫一篇技術相關的部落格

React

當資料傳來傳去很頭痛,要將資料傳到地球的另一端時,可能要三百年

我們可以利用 Context 來簡化傳來傳去的的問題

Context 可以想像是整個 TREE 外面的一個儲存庫(store),不經過每一個元件,可以直接取得

createContext

首先讓我們建立一個”空間”,裡面存放了使用者登入與否的資訊

import React from "react"

const AuthContext = React.createContext({
  isLoggedIn: false,
})

export default AuthContext

再來設定”供應來源以及誰要接收”

  • Provider
  • Consumer
const App = () => {
  return (
    <AuthContext.Provider
      value=
      //由於使用了consumer,要在這邊設定default value
    >
      <MainHeader />
    </AuthContext.Provider>
  )
}
const MainHeader = () => {
  return <AuthContext.consumer>
  {ctx => {
    return (
      <nav>
      {ctx.isLoggedIn && ...}
      {!ctx.isLoggedIn && ...}
    </nav>
    )
  }}
  </AuthContext.consumer>
}

//OR

const MainHeader = () => {
  const ctx = useContext(AuthContext)

  return (
    <nav>
      {ctx.isLoggedIn && ...}
      {!ctx.isLoggedIn && ...}
    </nav>
  )
}

這樣就不用擔心傳來傳去的問題了

可以直接撈到想要的資料

那原本的 store 要拿來做什麼呢

就留到下一篇ㄅ