Skip to content

Commit 788b31a

Browse files
committed
fix(docs): add auth loading example to auth recipes
1 parent d5af433 commit 788b31a

File tree

3 files changed

+168
-90
lines changed

3 files changed

+168
-90
lines changed

docs/auth.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,20 @@ const enhance = connect(
1616
enhance(SomeComponent)
1717
```
1818

19-
If you need access to methods that are not available at the top level, you can access Firebase's Full Auth API using `props.firebase.auth()` or `getFirebase().auth()`.
19+
If you need access to methods that are not available at the top level, you can access Firebase's Full Auth API using `props.firebase.auth()`.
2020

2121
#### NOTE
2222
All examples below assume you have passed `firebase` from `context` to props. Wrapping your component with with the `withFirebase` or `firebaseConnect` Higher Order Components will make `props.firebase` available within your component:
2323

2424
```js
2525
import React from 'react'
26-
import PropTypes from 'prop-types'
2726
import { withFirebase } from 'react-redux-firebase'
2827

29-
const SomeComponent = (props) => (
30-
// use props.firebase
31-
)
28+
function SomeComponent (props) {
29+
return (
30+
// use props.firebase
31+
)
32+
}
3233

3334
export default withFirebase(SomeComponent) // or firebaseConnect()(SomeComponent)
3435
```
@@ -37,7 +38,6 @@ Works same with class components (make sure you import `Component` from react):
3738

3839
```js
3940
import React, { Component } from 'react'
40-
import PropTypes from 'prop-types'
4141
import { firebaseConnect } from 'react-redux-firebase'
4242

4343
class SomeComponent extends Component {
@@ -49,6 +49,8 @@ class SomeComponent extends Component {
4949
export default firebaseConnect()(SomeComponent) // or withFirebase(SomeComponent)
5050
```
5151

52+
For examples of how to use this API, checkout the [auth recipes section](/docs/recipes/auth.html).
53+
5254
## login(credentials)
5355

5456
##### Parameters

docs/queries.md

Lines changed: 46 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,19 @@ import { withFirebase } from 'react-redux-firebase'
1919

2020
const todosPath = 'todos'
2121

22-
const Todos = ({ firebase, todos }) => (
23-
<div>
24-
<h1>Todos</h1>
22+
function Todos ({ firebase, todos }) {
23+
return (
2524
<div>
26-
{JSON.stringify(todos, null, 2)}
25+
<h1>Todos</h1>
26+
<div>
27+
{JSON.stringify(todos, null, 2)}
28+
</div>
29+
<button onClick={() => firebase.watchEvent('value', todosPath)}>
30+
Load Todos
31+
</button>
2732
</div>
28-
<button onClick={() => firebase.watchEvent('value', todosPath)}>
29-
Load Todos
30-
</button>
31-
</div>
32-
)
33+
)
34+
}
3335

3436
export default compose(
3537
withFirebase,
@@ -57,25 +59,29 @@ By default the results of queries are stored in redux under the path of the quer
5759
import React from 'react'
5860
import { connect } from 'react-redux'
5961
import { compose } from 'redux'
60-
import { withFirebase, isLoaded, isEmpty } from 'react-redux-firebase'
62+
import { firebaseConnect } from 'react-redux-firebase'
6163

62-
const Todos = ({ firebase, todos }) => (
63-
<div>
64-
<h1>Todos</h1>
64+
function Todos ({ firebase, todos }) {
65+
return (
6566
<div>
66-
{JSON.stringify(todos, null, 2)}
67+
<h1>Todos</h1>
68+
<div>
69+
{JSON.stringify(todos, null, 2)}
70+
</div>
6771
</div>
68-
</div>
69-
)
72+
)
73+
}
7074

71-
export default compose(
75+
const enhance = compose(
7276
firebaseConnect((props) => [
73-
{ path: 'todos' } // string equivalent 'todos'
77+
{ path: 'todos' }
7478
]),
7579
connect((state, props) => ({
7680
todos: state.firebase.data.todos
7781
}))
78-
)(Todos)
82+
)
83+
84+
export default enhance(Todos)
7985
```
8086

8187
**NOTE:**
@@ -93,7 +99,7 @@ import { connect } from 'react-redux'
9399
import { compose } from 'redux'
94100
import { firebaseConnect, isLoaded, isEmpty } from 'react-redux-firebase'
95101

96-
const Todos = ({ firebase, todos }) => {
102+
function Todos({ firebase, todos }) {
97103
// Build Todos list if todos exist and are loaded
98104
if (!isLoaded(todos)) {
99105
return <div>Loading...</div>
@@ -111,14 +117,16 @@ const Todos = ({ firebase, todos }) => {
111117
)
112118
}
113119

114-
export default compose(
120+
const enhance = compose(
115121
firebaseConnect((props) => [
116-
{ path: 'todos' } // string equivalent 'todos'
122+
{ path: 'todos' }
117123
]),
118124
connect((state) => ({
119125
todos: state.firebase.data.todos,
120126
}))
121-
)(Todos)
127+
)
128+
129+
export default enhance(Todos)
122130
```
123131

124132
##### Functional Approach Using Recompose {#loadingHOCs}
@@ -137,36 +145,42 @@ import {
137145
} from 'recompose'
138146

139147
// HOC that shows a component while condition is true
140-
export const renderWhile = (condition, component) =>
141-
branch(condition, renderComponent(component))
148+
export function renderWhile(condition, component) {
149+
return branch(condition, renderComponent(component))
150+
}
142151

143152
// HOC that shows loading spinner component while list of propNames are loading
144-
export const spinnerWhileLoading = propNames =>
145-
renderWhile(
153+
export function spinnerWhileLoadingpropNames {
154+
return renderWhile(
146155
props => some(propNames, name => !isLoaded(get(props, name))),
147156
LoadingSpinner
148157
)
158+
}
149159

150160
// HOC that shows a component while any of a list of props isEmpty
151-
export const renderIfEmpty = (propsNames, component) =>
152-
renderWhile(
161+
export function renderIfEmpty(propsNames, component) {
162+
return renderWhile(
153163
// Any of the listed prop name correspond to empty props (supporting dot path names)
154164
props => some(propNames, (name) => {
155165
const propValue = get(props, name)
156166
return isLoaded(propValue) && isEmpty(propValue)
157167
}),
158168
component
159169
)
170+
}
160171
```
161172

162173
That can then be used in HOC compositions to wait for data to load like so:
163174

164-
```js
175+
```jsx
176+
import React from 'react'
165177
import { compose } from 'redux'
166178
import { connect } from 'react-redux'
167179
import { firebaseConnect } from 'react-redux-firebase'
168180

169-
const EmptyMessage = () => <div>No Projects Found</div>
181+
function EmptyMessage() {
182+
return <div>No Projects Found</div>
183+
}
170184

171185
const enhance = compose(
172186
// set/unset listener to "projects" path on component mount/unmount
@@ -381,7 +395,7 @@ Start query at a specific location by providing the specific number or value
381395
firebaseConnect([
382396
{ path: '/todos', queryParams: [ 'startAt=5', 'limitToFirst=10' ] }
383397
// 'todos#startAt=val1&limitToFirst=10' // string notation
384-
])(SomeComponent)
398+
])
385399
```
386400

387401
#### endAt

0 commit comments

Comments
 (0)