[react/context]実際の操作に使用できるかどうか
1.序曲
ReactはRedux、MobX、Contextを使用してグローバルから
propsを共有できます
では、既存の業界で使用できるかどうかを試してみましょう.
今日の例では、次のタスクを実行します. Contextでデータを共有したい 部屋 もご利用ください
登録/非登録画面を共有するかどうかは、の認証を押してください.
2. Context
リカバリ・サーバが正常に稼働していることを前提に
サブコンポーネントでデータを操作するためのContextを作成します.
ファイルを作成して理解します.😙
ルートパスにsrcフォルダを作成します.
AuthContextをもう一つ作ろうjsファイルを作成します.
「createContext」をインポートしてcontextを作成
プロバイダがコンテキストを変更
広報役を務め、「AuthContext」でvalueを使う
userState HooksのuserState、setUserState、および
サブコンポーネントにisAuthenticated関数を渡す
3. App
ルートパスにsrcフォルダを作成します.
app.jsファイルを作成し、次のコードを記述します.
「useContext」Hookを使用して作成された
現在の値の返却が可能
次にfetchを使用して認証を行い、userStateのauth値を
変更
ログイン後、Cookieまたはセッションに格納されるタグ
検証して結果を「setUserState」に変更します.これは検証するかどうかによって異なります.
別の画面が見えます
4.整理
✔ContextもReduxまたはMobXの意図で作成
✔部品の再利用が難しいという欠点がある
✔特定以外の値を変更した場合、すべて再レンダリングされます(致命的)
✔storeが多くなく、状態管理が困難
✔部品外使用不可
10004 MソフトウェアでSide-effect管理ができません
✔のいろいろな欠点から、今の業界では使いにくいと思っています.
ReactはRedux、MobX、Contextを使用してグローバルから
propsを共有できます
では、既存の業界で使用できるかどうかを試してみましょう.
今日の例では、次のタスクを実行します.
登録/非登録画面を共有するかどうかは、
2. Context
リカバリ・サーバが正常に稼働していることを前提に
サブコンポーネントでデータを操作するためのContextを作成します.
ファイルを作成して理解します.😙
ルートパスにsrcフォルダを作成します.
AuthContextをもう一つ作ろうjsファイルを作成します.
「createContext」をインポートしてcontextを作成
// src/context/AuthContext.js
import React, { useState, createContext } from "react";
export const AuthContext = createContext();
export const AuthProvider = ({children}) => {
const [userState, setUserState] = useState({
_id: '',
name: '',
auth: false
});
const isAuthenticated = async (token) => {
return await fetch(apiURL, {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Token ${token}`
}
})
.then(response => response.json())
.catch(err => console.log(err))
};
return (
<AuthContext.Provider value={ {userState, setUserState, isAuthenticated} }>
{children}
</AuthContext.Provider>
);
};
「useState」Hookを使用して、ユーザーの認証の有無に応じて「auth」の値を変更します.プロバイダがコンテキストを変更
広報役を務め、「AuthContext」でvalueを使う
userState HooksのuserState、setUserState、および
サブコンポーネントにisAuthenticated関数を渡す
3. App
ルートパスにsrcフォルダを作成します.
app.jsファイルを作成し、次のコードを記述します.
// src/app.js
import React, {useContext, useEffect} from "react";
import ReactDOM from "react-dom";
import {AuthContext, AuthProvider} from "./context/AuthContext";
const App = () => {
const {userState, setUserState} = useContext(AuthContext);
return userState.auth ? <div>true</div> : <div>false</div>;
};
ReactDOM.render(
<AuthProvider>
<App />
</AuthProvider>,
document.getElementById("app"));
コンテキストで設定されたpropsを取得するには、最上位レベルで「AutheProvider」をレンダリングします.「useContext」Hookを使用して作成された
現在の値の返却が可能
次にfetchを使用して認証を行い、userStateのauth値を
変更
// src/app.js
const App = () => {
const {userState, setUserState, isAuthenticated} = useContext(AuthContext);
const token = 로그인 후 저장된 토큰
const authenticationUser = () => {
isAuthenticated(token)
.then(data => {
if(data.error) {
console.error('Error:', data.error)
} else {
setUserState({
_id: data.user._id,
name: data.user.name,
auth: data.user.auth
});
}
});
};
useEffect(() => {
authenticationUser();
}, []);
return userState.auth ? <div>true</div> : <div>false</div>;
};
一目でわかる👏ログイン後、Cookieまたはセッションに格納されるタグ
検証して結果を「setUserState」に変更します.これは検証するかどうかによって異なります.
別の画面が見えます
4.整理
✔ContextもReduxまたはMobXの意図で作成
✔部品の再利用が難しいという欠点がある
✔特定以外の値を変更した場合、すべて再レンダリングされます(致命的)
✔storeが多くなく、状態管理が困難
✔部品外使用不可
10004 MソフトウェアでSide-effect管理ができません
✔のいろいろな欠点から、今の業界では使いにくいと思っています.
Reference
この問題について([react/context]実際の操作に使用できるかどうか), 我々は、より多くの情報をここで見つけました https://velog.io/@mujaen/ReactContext-현업에서-쓸-수-있을까テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol