Context API
Context API Context
は、「反応素子ツリー」においてデータをグローバルに共有することを目的とする.
Reactは、複雑な構成部品ツリーの状態共有の問題を解決するためのContext API
を提供する.Context API
を使用すると、データは親要素から子要素までのすべての要素공급(Provider)
に設定され、その後、特定の位置の要素上で수요(Consumer)
に直接設定され得る.
export const AuthConetxt = React.createContext(false);
const App extends Component {
state = {
authentication: true
}
render() {
return (
<div className="app">
<AuthContext.Provider value={this.state.authentication}>
<MenuBar />
{/*...*/}
</AuthContext.Provider>
</div>
)
}
}
// App -> MenuBar는 전달과정 불 필요.
const MenuBar = () => (
<div className="member">
<SignIn />
</div>
)
// App -> MenuBar -> SignIn
import { AppContext } from ''app.js경로'
const SignIn = () => (
<AuthContext.Consumer>
{ // Provider에서 value로 전달한 값이 인자로 전달됨
(context) => context ?
<div className="signed">로그인 사용자</div> :
<div className="un-signed">로그인 필요</div>
}
</AuthContext.Consumer>
)
Contextの主な用途は、複雑な「ネスト」サブコンポーネントにデータを共有することです.
Contextを使用すると、構成部品の再使用が難しく、必要に応じてのみ使用できます.
コンテキストの作成
React.createContext APIを使用したコンテキストの作成const Context = React.createContext(초기값);
コンテキストプロバイダ
生成されたコンテキストオブジェクトには、Provider
要素が含まれます.Provider
は、インサート要素にvalue
を提供する<Context.Provider value={value}>
{/* 중첩된 컴포넌트 */}
</Context.Provider>
コンテキストデマンド
生成されたコンテキストオブジェクトのConsumer
要素は、提供されたvalue
のコールバック関数を受信することによって要素をレンダリングする.<Context.Consumer>
{
(value) => {
// React 요소 반환
return <></>
}
}
</Context.Consumer>
コンテキストのデフォルト設定
生成されたコンテキストオブジェクトのデフォルト値を設定できます.const themes = {
light: {
main: ...,
sub: ...
},
darK: {
main: ...,
sub: ...
}
}
const ThemeContext = React.createContext(themes.dark);
export default ThemeContext;
Contextのデフォルト値はContextです.プロバイダ設定なしでvalue
を送信
ただし、この場合は「読み取り専用」として使用されます.
Reference
この問題について(Context API), 我々は、より多くの情報をここで見つけました
https://velog.io/@jtwjs/Context-API
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
export const AuthConetxt = React.createContext(false);
const App extends Component {
state = {
authentication: true
}
render() {
return (
<div className="app">
<AuthContext.Provider value={this.state.authentication}>
<MenuBar />
{/*...*/}
</AuthContext.Provider>
</div>
)
}
}
// App -> MenuBar는 전달과정 불 필요.
const MenuBar = () => (
<div className="member">
<SignIn />
</div>
)
// App -> MenuBar -> SignIn
import { AppContext } from ''app.js경로'
const SignIn = () => (
<AuthContext.Consumer>
{ // Provider에서 value로 전달한 값이 인자로 전달됨
(context) => context ?
<div className="signed">로그인 사용자</div> :
<div className="un-signed">로그인 필요</div>
}
</AuthContext.Consumer>
)
const Context = React.createContext(초기값);
<Context.Provider value={value}>
{/* 중첩된 컴포넌트 */}
</Context.Provider>
<Context.Consumer>
{
(value) => {
// React 요소 반환
return <></>
}
}
</Context.Consumer>
const themes = {
light: {
main: ...,
sub: ...
},
darK: {
main: ...,
sub: ...
}
}
const ThemeContext = React.createContext(themes.dark);
export default ThemeContext;
Reference
この問題について(Context API), 我々は、より多くの情報をここで見つけました https://velog.io/@jtwjs/Context-APIテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol