适当的帮助程序或自定义 React 钩子来添加和初始化 Firebase

IT技术 reactjs firebase react-hooks
2021-05-05 03:28:02

我正在尝试将 Firebase 连接到我的项目。为了使代码更简洁、更可重用,我想将 Firebase 代码添加到帮助程序或自定义挂钩中。

这是我到目前为止:

使用Firebase.ts

import { useState, useEffect } from 'react';

import firebase from 'firebase/app';
import 'firebase/analytics';
import 'firebase/remote-config';

const useFirebase = () => {
  const firebaseConfig = {
    apiKey: process.env.FIREBASE_API_KEY,
    authDomain: process.env.FIREBASE_AUTH_DOMAIN,
    databaseURL: process.env.FIREBASE_DATABASE_URL,
    projectId: process.env.FIREBASE_PROJECT_ID,
    storageBucket: process.env.FIREBASE_STORAGE_BUCKET,
    messagingSenderId: process.env.FIREBASE_MESSAGING_SENDER_ID,
    appId: process.env.FIREBASE_APP_ID,
    measurementId: process.envg.FIREBASE_MEASUREMENT_ID,
  };

useEffect(() => {
    // firebase.analytics();
    // firebase.remoteConfig();
    firebase
      .initializeApp(firebaseConfig)
      .firestore()
      .collection('notes')
      .add({ title: 'Working', body: 'Connection is working' });
  }, []);
};

export default useFirebase;

所以我可以在另一个文件中使用它,比如:

import { useFirebase } from 'app/hooks';
useFirebase();

这是赖特的方法吗?

更新:

受到评论的启发,我创建了一个帮手 firebase.ts

firebase.ts

import firebase from 'firebase/app';
import 'firebase/analytics';
import 'firebase/remote-config';
import 'firebase/firestore';

import config from 'client/config';

const firebaseConfig = {
  apiKey: process.env.FIREBASE_API_KEY,
authDomain: process.env.FIREBASE_AUTH_DOMAIN,
databaseURL: process.env.FIREBASE_DATABASE_URL,
projectId: process.env.FIREBASE_PROJECT_ID,
storageBucket: process.env.FIREBASE_STORAGE_BUCKET,
messagingSenderId: process.env.FIREBASE_MESSAGING_SENDER_ID,
appId: process.env.FIREBASE_APP_ID,
measurementId: process.envg.FIREBASE_MEASUREMENT_ID
};

if (!firebase.apps.length) {
  firebase.initializeApp(firebaseConfig);
}

export default firebase;

现在在另一个文件中我正在导入firebase

import firebase from 'app/helpers/firebase';

firebase
    .firestore()
    .collection('notes')
    .add({ title: 'Working', body: 'Connection is working' });

我添加firestore以测试 Firestore 是否已连接到我的应用程序。我只需要analyticsremote-config来自 Firestore。

1)有没有其他方法可以测试它是否连接正确?
2)在助手中我初始化了 Firebase。有那个文件就够了吗?或者我必须在某个地方导入它?

1个回答

我还没有真正看到使用 React 钩子来初始化 Firebase SDK。您可以简单地创建一个名为“firebase.js”的文件并添加以下代码:

  import firebase from 'firebase/app';
  import 'firebase/analytics';
  import 'firebase/remote-config';

  const firebaseConfig = {
    apiKey: process.env.FIREBASE_API_KEY,
    authDomain: process.env.FIREBASE_AUTH_DOMAIN,
    databaseURL: process.env.FIREBASE_DATABASE_URL,
    projectId: process.env.FIREBASE_PROJECT_ID,
    storageBucket: process.env.FIREBASE_STORAGE_BUCKET,
    messagingSenderId: process.env.FIREBASE_MESSAGING_SENDER_ID,
    appId: process.env.FIREBASE_APP_ID,
    measurementId: process.envg.FIREBASE_MEASUREMENT_ID,
  };

  firebase.initializeApp(config);

  export const auth = firebase.auth();
  export const db = firebase.database()

然后你可以轻松地在任何地方使用它:

import {auth} from "./firebase.js";

// Rest of the code