React 컨텍스트 API 및 Firebase 인증 소개
본 강좌의 몇 가지 선결 조건을 따르다.
반응 컨텍스트 API란 무엇입니까?
일반적으로 React에서는 상위 구성 요소에서 하위 구성 요소로
props
라는 내용을 전달합니다.React 응용 프로그램은 구성 요소로 구성되어 있으며 많은 구성 요소는 부자 관계를 가지기 때문에 응용 프로그램의 간단한 시각화는 다음과 같다.대부분의 경우 우리는 부모로부터 아이에게 물려주기만 하면 되기 때문에 일반적인
state
과 props
을 사용하면 충분하다.그러나 만약에 우리가 aprop
를 많은 구성 요소에 전달해야 한다면 어떻게 해야 합니까?그 깊은 둥지나 다른 나무에서도?예:
props
을 모든 구성 요소에서 모든 구성 요소로 전달해야 한다. 이것은 너무 단조롭다!이것은 지주 시추라고 불린다.다음은 구조의 반응 컨텍스트 API입니다.그들의 공식 문서에 따르면,React Context API provides the ability to pass props to child components without needing to pass them down manually.
이제 우리는 그것이 무엇인지, 언제 그것을 사용해야 하는지 알게 되었다.
이제 Firebase 인증을 사용하는 간단한 예시를 소개하겠습니다.컨텍스트 API를 사용해야 하므로 인증된 사용자 도구를 각 서브어셈블리에 수동으로 전달할 필요가 없습니다.어떻게 작동하는지 봅시다.
1단계: Firebase 프로젝트 만들기
https://firebase.google.com/로 이동하여 새 프로젝트를 만듭니다.
대시보드에서 웹 아이콘을 클릭하여 Firebase for 웹 응용 프로그램을 초기화합니다.
Firebase 절차에 따라 구성 변수를 표시하는 페이지로 이동합니다.이것은 매우 중요하기 때문에 복제하여 어딘가에 저장해 주십시오.우리는 곧 그것을 사용할 것이다.
2단계: Firebase 인증 설정
다음 그림과 같이 검증으로 이동합니다.
그런 다음 응용 프로그램의 로그인 방법을 설정할 수 있습니다.예를 들어 나는 구글, 전자메일, 페이스북을 사용할 것이다.
Facebook 로그인 설정
구글과 전자메일 인증은 전환 단추를 누르면 로그인 방법으로 사용할 수 있습니다.Facebook의 경우 Facebook 개발자 계정이 있어야 설정할 수 있습니다.
This is optional, so please skip to step 3 if you don't plan on using Facebook as an authentication method.
prop
이다.저장을 클릭하면 완료됩니다!3단계: React 항목 설정
Google은 세 가지 로그인 방법(즉 구글, 전자메일, 페이스북)을 위해 Firebase 인증을 마쳤으며, Firebase를 사용할 수 있도록 React 프로젝트를 구축합니다.
프로젝트의 루트 디렉토리에서 다음을 실행합니다.
npm install firebase react-firebaseui
http://localhost:3000
React 응용 프로그램에 Firebase를 설정하는 데 필요한 도구와 인프라를 포함합니다.firebase
사전 제작 구성 요소를 제공하여 인증을 처리하고 표시할 수 있습니다.4단계: Firebase 구성
React 응용 프로그램의
react-firebaseui
폴더에 "Firebase"폴더를 만들고 src
라는 파일을 만듭니다.여기서 1단계의 설정 변수를 붙일 것입니다.복사하는 것을 잊어버리면 Firebase 항목 설정에서 항상 구성 변수를 찾을 수 있습니다(아래 그림 참조).config.js
에서 우리는 세 가지 일을 할 것이다.Firebase/config.js
Firebase 응용 프로그램 인스턴스 만들기//1. import the dependencies
import * as firebase from "firebase";
import "firebase/auth";
//2. Initialize app with the config vars
const app = firebase.initializeApp({
apiKey: process.env.REACT_APP_API_KEY,
authDomain: process.env.REACT_APP_AUTH_DOMAIN,
databaseURL: process.env.REACT_APP_DATABASE_URL,
projectId: process.env.REACT_APP_PROJECT_ID,
storageBucket: process.env.REACT_APP_STORAGE_BUCKET,
messagingSenderId: process.env.REACT_APP_MESSAGING_SENDER_ID,
});
//3. export it for use
export default app;
5단계: Firebase 컨텍스트
이제 컨텍스트 API를 사용하여 Firebase 컨텍스트를 작성합니다.
firebase.initializeApp(config)
폴더에 Firebase
라는 새 파일을 추가합니다.우리는 다음과 같은 일을 할 것이다.
context.js
React 의존 항목 및 응용 프로그램 가져오기config.js
라는 React 컨텍스트를 작성하고 내보냅니다.AuthContext
React.createContext()
는 다른 구성 요소에 AuthProvider
의 상태를 제공할 것이다.이렇게 하면 우리 프로그램의 모든 구성 요소는 사용자가 로그인하고 사용자의 속성에 접근했는지 확인할 수 있습니다.AuthProvider
상태용user
갈고리를 null로 초기화하고 user
갈고리와 FirebaseuseState
로 업데이트합니다.useEffect
는 기본적으로 신분 검증 변경을 정탐하는 관찰자이다.이렇게 하면 사용자가 로그인하거나 로그아웃할 때마다 우리auth().onAuthStateChanged(setUser)
의 상태는 우리onAuthStateChanged
에서 자동으로 업데이트됩니다.코드는 다음과 같습니다.
//1.
import React, { useEffect, useState } from "react";
import app from "./config";
//2.
export const AuthContext = React.createContext();
//3.
export const AuthProvider = ({ children }) => {
const [user, setUser] = useState(null);
useEffect(() => {
app.auth().onAuthStateChanged(setUser);
}, []);
return (
<AuthContext.Provider value={{ user }}>{children}</AuthContext.Provider>
);
};
6단계: AuthProvider를 응용 프로그램으로 가져옵니다.회사 명
이제
user
애플리케이션을 가져올 수 있습니다.js와 모든 구성 요소를 여기에 놓으십시오.이렇게 하면 응용 프로그램의 모든 구성 요소에 상하문을 전달할 수 있습니다. (구성 요소 트리의 맨 위 노드이기 때문입니다.)import { AuthProvider } from "./Firebase/context";
function App() {
return (
<AuthProvider>
<Router>
<div className="App">
<Nav />
<Switch>
<Route path="/signin" exact component={SignIn} />
</Switch>
</div>
</Router>
</AuthProvider>
);
}
단계 7: 구성 요소 로그인
우리는 사용자가 응용 프로그램에 로그인할 수 있도록 로그인 단추를 표시하는
AuthProvider
를 만들었다.위의 AuthProvider
코드를 통해 알 수 있듯이 내 응용 프로그램은 경로 SignIn.js
에서 로그인 구성 요소를 나타낼 것이다.App.js
구성 요소에 로그인/등록 단추가 있습니다. 이 단추를 누르면 /signin
경로에 연결되어 로그인 단추를 표시합니다.이후에 우리는 우리의 Nav
를 볼 것이다.따라서 로그인 구성 요소는 다음과 같이 가져옵니다.
import React, { useContext } from "react";
import "../App.css";
import firebase from "firebase";
import { FirebaseAuth } from "react-firebaseui";
import { AuthContext } from "../Firebase/context";
import { Redirect } from "react-router-dom";
/signin
는 어셈블리가 컨텍스트를 사용할 수 있도록 하는 React 갈고리입니다.Nav.js
는 우리 로그인 방법useContext
포함 FirebaseAuth
사용할 컨텍스트AuthContext
로그인 후 사용자를 홈 페이지로 다시 지정할 수 있음export default function SignIn() {
//get the user state from the context
const { user } = useContext(AuthContext);
//this is our config for FirebaseAuth
const uiConfig = {
signInFlow: "popup",
signInOptions: [
firebase.auth.GoogleAuthProvider.PROVIDER_ID,
firebase.auth.FacebookAuthProvider.PROVIDER_ID,
firebase.auth.EmailAuthProvider.PROVIDER_ID,
],
callbacks: {
signInSuccess: () => false,
},
};
//if user exists or signed in, we redirect the page to home, else display the sign in methods with FirebaseAuth
return (
<div>
{!!user ? (
<Redirect to={{ pathname: "/" }} />
) : (
<div>
<p>Please Sign In</p>
<FirebaseAuth uiConfig={uiConfig} firebaseAuth={firebase.auth()} />
</div>
)}
</div>
);
}
마지막 단계: Nav의 조건 렌더링.회사 명
마지막으로, 현재 인증된 사용자가 없다면, 우리는
useContext
구성 요소를 만들어서 로그인 단추를 표시합니다.만약 사용자가 확실히 존재한다면, 우리는 사용자의 Redirect
및 Nav
속성에 접근해서 그 이름과 그림을 표시할 것입니다.더 많은 사용자 속성은 문서here에서 찾을 수 있습니다.또한 사용자 로그아웃을 클릭할 때 실행되는 로그아웃 링크가 있습니다
displayName
.이것은 우리 것
photoURL
:import { AuthContext } from "../Firebase/context.js";
export default function Nav() {
//get the user state from context
const { user } = useContext(AuthContext);
//if user exists, display user name and picture.
//else, show a sign in button instead
return (
<div className="account">
{!!user ? (
<div className="dropdown">
<p>{`Welcome, ${user.displayName}`}</p>
<div className="dropdown-content">
<Link to="/">Create Stories</Link>
<Link to="/">My Stories</Link>
<Link onClick={() => app.auth().signOut()}>Sign Out</Link>
</div>
</div>
) : (
<Link to="/signin">
<button>SIGN IN/ REGISTER</button>
</Link>
)}
</div>
);
}
우리의 최종 결과
* 예!너무 멋있지 않아요?
한 마디로 하면React Context API는 상하문을 만들고 응용 프로그램의 다른 구성 요소에 데이터를 전달하는 아름답고 간단한 방법을 제공합니다.나는 본고가 상하문 API와 Firebase 인증을 어떻게 사용하는지 배우는 데 도움이 되기를 바란다.읽어주셔서 감사합니다.아래에 어떤 질문이나 평론을 남겨 주십시오.또는 아래의 참고 자료를 읽어서 우리가 오늘 토론한 내용에 대해 더 많이 알아보세요.다음까지 건배!
한층 더 읽다
Reference
이 문제에 관하여(React 컨텍스트 API 및 Firebase 인증 소개), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/lo_victoria2666/introduction-to-react-context-api-with-firebase-authentication-4hg2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)