0.12.0-preview.3 ā¢ Published 3 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
3 years ago
0.13.0-preview.2
3 years ago
0.13.0-preview.1
3 years ago
0.12.0-preview.16
3 years ago
0.12.0-preview.13
3 years ago
0.12.0-preview.14
3 years ago
0.12.0-preview.12
3 years ago
0.12.0-preview.11
3 years ago
0.12.0-preview.10
3 years ago
0.12.0-preview.7
3 years ago
0.12.0-preview.6
3 years ago
0.12.0-preview.9
3 years ago
0.12.0-preview.8
3 years ago
0.12.0-preview.3
3 years ago
0.12.0-preview.2
3 years ago
0.12.0-preview.4
3 years ago
0.12.0-preview.1
3 years ago
0.11.0-preview.1
3 years ago
0.11.0-preview.2
3 years ago
0.11.0-preview.3
3 years ago
0.10.0-preview.3
3 years ago
0.10.0-preview.2
3 years ago
0.10.0-preview.1
3 years ago
0.8.0-preview.1
3 years ago
0.9.0-preview.1
3 years ago
0.7.0-preview.1
3 years ago
0.6.0-preview.1
4 years ago
0.5.0-preview.8
4 years ago
0.5.0-preview.7
5 years ago
0.5.0-preview.6
5 years ago
0.5.0-preview.5
5 years ago
0.5.0-preview.4
5 years ago
0.5.0-preview.3
5 years ago
0.5.0-preview.2
5 years ago
0.5.0-preview.1
5 years ago
0.2.0
5 years ago
0.1.0
5 years ago