Initial Setup
In violet-paginator
, each paginated list gets its own reducer, which is generated by calling the createReducer
function.
This function accepts a config
object with only two required properties: listId
and fetch
. The listId
is used to identify
your reducer and must be unique. The fetch
property is an action creator that's used to retrieve the results
(check here for more). Example:
import { createPaginator } from 'violet-paginator'
import { combineReducers } from 'redux'
import users from './users/reducer'
import { fetch } from './recipes/actions'
export default combineReducers({
users,
recipes: createPaginator({
listId: 'recipes', // expects reducer to be mounted at state.recipes
fetch
})
})
By default, violet-paginator
will use the listId
to figure out where to find your reducer. In the example above, it will expect
the reducer to be mounted at state.recipes
. To override this behavior, specify a locator
function like this:
export default combineReducers({
users,
recipes: createPaginator({
listId: 'recipesList',
locator: state => state.recipes, // locator function accepts the state and returns the correct reducer
fetch
})
})
Additionally, you can use this opportunity to override the initial settings or configure the page params for your list:
export default combineReducers({
users,
recipes: createPaginator({
listId: 'recipes',
fetch,
initialSettings: {
pageSize: 25,
sort: 'name',
filters: {
active: true
}
},
pageParams: {
resultsProp: 'recipes',
totalCountProp: 'total'
}
})
})