Skip to content

Latest commit

 

History

History
47 lines (37 loc) · 1.19 KB

thunks.md

File metadata and controls

47 lines (37 loc) · 1.19 KB

Thunks

redux-thunk integration

In order to get the most out of writing your thunks, make sure to set up your thunk middleware using it's redux-thunk's withExtraArgument method like so:

import { applyMiddleware, compose, createStore } from 'redux';
import thunk from 'redux-thunk';
import { reactReduxFirebase, getFirebase } from 'react-redux-firebase';
import makeRootReducer from './reducers';

const fbConfig = {} // your firebase config

const store = createStore(
  makeRootReducer(),
  initialState,
  compose(
    applyMiddleware([
      thunk.withExtraArgument(getFirebase) // Pass getFirebase function as extra argument
    ]),
    reactReduxFirebase(fbConfig, { userProfile: 'users', enableLogging: false })
  )
);

Example Thunk

After following the setup above, getFirebase function becomes available within your thunks as the third argument:

const sendNotification = (payload) => {
  type: NOTIFICATION,
  payload
}
export const addTodo = (newTodo) =>
  (dispatch, getState, getFirebase) => {
    const firebase = getFirebase()
    firebase
      .push('todos', newTodo)
      .then(() => {
        dispatch(sendNotification('Todo Added'))
      })
  };