Context
11797 ワード
Contextの作成
ContextはcreateContextという名前の関数で作成できます.import { createContext } from 'react';
const LocaleContext = createContext();
参考までに下記のようにデフォルト値を入れることができますimport { createContext } from 'react';
const LocaleContext = createContext('ko');
Contextの適用
Contextに書き込む場合は、共有値の範囲を特定して書き込む必要があります.
範囲はContextオブジェクトのProviderという名前のコンポーネントとして定義できます.
その後、Providerのvaluepropを使用して共有値を下げることができます.import { createContext } from 'react';
const LocaleContext = createContext('ko');
function App() {
return (
<div>
... 바깥의 컴포넌트에서는 LocaleContext 사용불가
<LocaleContext.Provider value="en">
... Provider 안의 컴포넌트에서는 LocaleContext 사용가능
</LocaleContext.Provider>
</div>
);
}
Context値の使用
userContextという名前のHookを使用して値を取得および使用できます.
そして使うContextを私たちに伝えればいいのですimport { createContext, useContext } from 'react';
const LocaleContext = createContext('ko');
function Board() {
const locale = useContext(LocaleContext);
return <div>언어: {locale}</div>;
}
function App() {
return (
<div>
<LocaleContext.Provider value="en">
<Board />
</LocaleContext.Provider>
</div>
);
}
State、Hookとの併用
プロバイダとして機能する構成部品を作成します.
ここでStateを作成してvalueに渡すことができます.
次のuseLocaleもあります
また、useContextを使用してインポート値のカスタムホームページを作成することもできます.
これにより、Contextが使用するState値は以下のようになります.
私たちが作成した関数でしか書けないからです.
これは、セキュリティコードの作成に役立ちます.import { createContext, useContext, useState } from 'react';
const LocaleContext = createContext({});
export function LocaleProvider({ children }) {
const [locale, setLocale] = useState();
return (
<LocaleContext.Provider value={{ locale, setLocale }}>
{children}
</LocaleContext.Provider>
);
}
export function useLocale() {
const context = useContext(LocaleContext);
if (!context) {
throw new Error('반드시 LocaleProvider 안에서 사용해야 합니다');
}
const { locale } = context;
return locale;
}
export function useSetLocale() {
const context = useContext(LocaleContext);
if (!context) {
throw new Error('반드시 LocaleProvider 안에서 사용해야 합니다');
}
const { setLocale } = context;
return setLocale;
}
Reference
この問題について(Context), 我々は、より多くの情報をここで見つけました
https://velog.io/@zinukk/Context
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
import { createContext } from 'react';
const LocaleContext = createContext();
import { createContext } from 'react';
const LocaleContext = createContext('ko');
Contextに書き込む場合は、共有値の範囲を特定して書き込む必要があります.
範囲はContextオブジェクトのProviderという名前のコンポーネントとして定義できます.
その後、Providerのvaluepropを使用して共有値を下げることができます.
import { createContext } from 'react';
const LocaleContext = createContext('ko');
function App() {
return (
<div>
... 바깥의 컴포넌트에서는 LocaleContext 사용불가
<LocaleContext.Provider value="en">
... Provider 안의 컴포넌트에서는 LocaleContext 사용가능
</LocaleContext.Provider>
</div>
);
}
Context値の使用
userContextという名前のHookを使用して値を取得および使用できます.
そして使うContextを私たちに伝えればいいのですimport { createContext, useContext } from 'react';
const LocaleContext = createContext('ko');
function Board() {
const locale = useContext(LocaleContext);
return <div>언어: {locale}</div>;
}
function App() {
return (
<div>
<LocaleContext.Provider value="en">
<Board />
</LocaleContext.Provider>
</div>
);
}
State、Hookとの併用
プロバイダとして機能する構成部品を作成します.
ここでStateを作成してvalueに渡すことができます.
次のuseLocaleもあります
また、useContextを使用してインポート値のカスタムホームページを作成することもできます.
これにより、Contextが使用するState値は以下のようになります.
私たちが作成した関数でしか書けないからです.
これは、セキュリティコードの作成に役立ちます.import { createContext, useContext, useState } from 'react';
const LocaleContext = createContext({});
export function LocaleProvider({ children }) {
const [locale, setLocale] = useState();
return (
<LocaleContext.Provider value={{ locale, setLocale }}>
{children}
</LocaleContext.Provider>
);
}
export function useLocale() {
const context = useContext(LocaleContext);
if (!context) {
throw new Error('반드시 LocaleProvider 안에서 사용해야 합니다');
}
const { locale } = context;
return locale;
}
export function useSetLocale() {
const context = useContext(LocaleContext);
if (!context) {
throw new Error('반드시 LocaleProvider 안에서 사용해야 합니다');
}
const { setLocale } = context;
return setLocale;
}
Reference
この問題について(Context), 我々は、より多くの情報をここで見つけました
https://velog.io/@zinukk/Context
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
import { createContext, useContext } from 'react';
const LocaleContext = createContext('ko');
function Board() {
const locale = useContext(LocaleContext);
return <div>언어: {locale}</div>;
}
function App() {
return (
<div>
<LocaleContext.Provider value="en">
<Board />
</LocaleContext.Provider>
</div>
);
}
プロバイダとして機能する構成部品を作成します.
ここでStateを作成してvalueに渡すことができます.
次のuseLocaleもあります
また、useContextを使用してインポート値のカスタムホームページを作成することもできます.
これにより、Contextが使用するState値は以下のようになります.
私たちが作成した関数でしか書けないからです.
これは、セキュリティコードの作成に役立ちます.
import { createContext, useContext, useState } from 'react';
const LocaleContext = createContext({});
export function LocaleProvider({ children }) {
const [locale, setLocale] = useState();
return (
<LocaleContext.Provider value={{ locale, setLocale }}>
{children}
</LocaleContext.Provider>
);
}
export function useLocale() {
const context = useContext(LocaleContext);
if (!context) {
throw new Error('반드시 LocaleProvider 안에서 사용해야 합니다');
}
const { locale } = context;
return locale;
}
export function useSetLocale() {
const context = useContext(LocaleContext);
if (!context) {
throw new Error('반드시 LocaleProvider 안에서 사용해야 합니다');
}
const { setLocale } = context;
return setLocale;
}
Reference
この問題について(Context), 我々は、より多くの情報をここで見つけました https://velog.io/@zinukk/Contextテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol