Context API
1933 ワード
Cache
Cacheは一時的にデータを格納する場所です。
アポロシーザー
プロジェクト全体からアクセス可能なglobal state
これまで、支柱は多くの段階を経て、伝達、伝達...無限に伝えてくれたけど.
アポロシーザー台を使うと、プロジェクト全体が近づくことができます.
ただし、すべての値がアポロキャッシュ状態に格納されている場合
複雑なので、私はこの問題を解決します.
Context API.
Context API
最上位レベルapp jsから最下位レベルへのデータ転送
私が払いたいお金を加えただけで渡すことができます.
createContext
import { createContext } from "react"; export const GlobalContext = createContext(null); function MyApp({ Component, pageProps }) { const [accessToken, setAccessToken] = useState(""); const [userInfo, setUserInfo] = useState({}); const value = { accessToken: accessToken, setAccessToken: setAccessToken, userInfo: userInfo, setUserInfo: setUserInfo, }; ............ 最上位ファイルからデータを転送するためにcreateContextを書きました。 そして譲渡したい価格をvalueに入れました。 return ( <GlobalContext.Provider value={value}> <ApolloProvider client={client}> {!isMain && !isSignIn && ( <Layout> <Component {...pageProps} /> </Layout> )} {isMain && <Main />} {isSignIn && <SignIn />} </ApolloProvider> </GlobalContext.Provider> ); } GlobalContextという名前のContextAPIが作成されています。 私が適用したい部分の外<GlobalContextProvider>で彼をかばった。 value値を伝えるために、道具で伝える様子。
useContext
import { useContext} from "react"; export default function MainPage() { const { setAccessToken } = useContext(GlobalContext); async function onClickLogin() { try { const result = await loginUser({ variables: { password, email, }, }); console.log(result.data.loginUser.accessToken); localStorage.setItem("accessToken", result.data?.loginUser.accessToken); setAccessToken(result.data.loginUser.accessToken); router.push("/boards"); } catch (err: any) { alert(err.message); } } ContextAPIを受信および書き込みするには、useContextをインポートする必要があります。
Reference
この問題について(Context API), 我々は、より多くの情報をここで見つけました https://velog.io/@byungjin0120/Context-API-9s9gvlceテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol