0.12.0-preview.3 ⢠Published 4 years ago
@jameslnewell/react-firebase v0.12.0-preview.3
@jameslnewell/react-firebase
š£ React hooks for working with firebase.
Installation
NPM:
npm install @jameslnewell/react-firebase
Yarn:
yarn add @jameslnewell/react-firebase
Usage
index.js
import firebase from 'firebase';
import 'firebase/app';
import 'firebase/auth';
import 'firebase/firestore';
import React from 'react';
import ReactDOM from 'react-dom';
import {AppProvider} from '@jameslnewell/react-firebase';
import {App} from './App';
const app = firebase.initializeApp({
/* your firebase config */
});
ReactDOM.render(
<AppProvider app={app}>
<App />
</AppProvider>,
document.getElementById('app'),
);
Navbar.js
import React from 'react';
import firebase from 'firebase';
import {useUser, useSignInWithPopup useSignOut} from '@jameslnewell/react-firebase/auth';
export const Navbar = () => {
const {isAuthenticated} = useStatus();
const {invoke: signIn} = useSignInWithPopup();
const {invoke: signOut} = useSignOut();
const handleSignInOrOut = () => {
if (isAuthenticated) {
signOut();
} else {
signIn(new firebase.auth.GoogleAuthProvider());
}
};
return (
<nav>
<button onClick={handleSignInOrOut}>{isAuthenticated ? 'Sign out' : Sign in}</button>
</nav>
);
}
UserProfile.js
import React from 'react';
import {useDocument} from '@jameslnewell/react-firebase/firestore';
export const UserProfile = ({userId}) => {
const [user, {status}] = useDocument(`users/${userId}`);
switch (status) {
case 'receiving':
return 'Loading...';
case 'errored':
return 'Unable to fetch profile for user';
default:
return (
<>
{user && user.id}
{user && user.get('name')}
</>
);
}
};
API
app
<AppProvider>
useApp()
auth
useStatus()
useUser()
useSignInWithPopup()
useSignOut()
firestore
useCollection()
useDocument()
useCreateDocument()
useUpdateDocument()
useSetDocument()
useDeleteDocument()
<Collection>
<Document>
storage
0.13.0-preview.3
4 years ago
0.13.0-preview.2
4 years ago
0.13.0-preview.1
4 years ago
0.12.0-preview.16
4 years ago
0.12.0-preview.13
4 years ago
0.12.0-preview.14
4 years ago
0.12.0-preview.12
4 years ago
0.12.0-preview.11
4 years ago
0.12.0-preview.10
4 years ago
0.12.0-preview.7
4 years ago
0.12.0-preview.6
4 years ago
0.12.0-preview.9
4 years ago
0.12.0-preview.8
4 years ago
0.12.0-preview.3
4 years ago
0.12.0-preview.2
4 years ago
0.12.0-preview.4
4 years ago
0.12.0-preview.1
4 years ago
0.11.0-preview.1
4 years ago
0.11.0-preview.2
4 years ago
0.11.0-preview.3
4 years ago
0.10.0-preview.3
4 years ago
0.10.0-preview.2
4 years ago
0.10.0-preview.1
4 years ago
0.8.0-preview.1
4 years ago
0.9.0-preview.1
4 years ago
0.7.0-preview.1
4 years ago
0.6.0-preview.1
5 years ago
0.5.0-preview.8
5 years ago
0.5.0-preview.7
6 years ago
0.5.0-preview.6
6 years ago
0.5.0-preview.5
6 years ago
0.5.0-preview.4
6 years ago
0.5.0-preview.3
6 years ago
0.5.0-preview.2
6 years ago
0.5.0-preview.1
6 years ago
0.2.0
7 years ago
0.1.0
7 years ago