Creates an object with standard CRUD action types:
var reduxCrud = require('redux-crud');
var actionTypes = reduxCrud.actionTypesFor('users');
// actionTypes =>
{
USERS_FETCH_START: 'USERS_FETCH_START',
USERS_FETCH_SUCCESS: 'USERS_FETCH_SUCCESS',
USERS_FETCH_ERROR: 'USERS_FETCH_ERROR',
USERS_UPDATE_START: 'USERS_UPDATE_START',
USERS_UPDATE_SUCCESS: 'USERS_UPDATE_SUCCESS',
USERS_UPDATE_ERROR: 'USERS_UPDATE_ERROR',
USERS_CREATE_START: 'USERS_CREATE_START',
USERS_CREATE_SUCCESS: 'USERS_CREATE_SUCCESS',
USERS_CREATE_ERROR: 'USERS_CREATE_ERROR',
USERS_DELETE_START: 'USERS_DELETE_START',
USERS_DELETE_SUCCESS: 'USERS_DELETE_SUCCESS',
USERS_DELETE_ERROR: 'USERS_DELETE_ERROR',
// Object also contains shortcuts
fetchStart: 'USERS_FETCH_START',
fetchSuccess: 'USERS_FETCH_SUCCESS',
fetchError: 'USERS_FETCH_ERROR',
updateStart: 'USERS_UPDATE_START',
updateSuccess: 'USERS_UPDATE_SUCCESS',
updateError: 'USERS_UPDATE_ERROR',
createStart: 'USERS_CREATE_START',
createSuccess: 'USERS_CREATE_SUCCESS',
createError: 'USERS_CREATE_ERROR',
deleteStart: 'USERS_DELETE_START',
deleteSuccess: 'USERS_DELETE_SUCCESS',
deleteError: 'USERS_DELETE_ERROR',
}
Generates the following action creators:
fetchStart
fetchSuccess
fetchError
createStart
createSuccess
createError
updateStart
updateSuccess
updateError
deleteStart
deleteSuccess
deleteError
var reduxCrud = require('redux-crud');
var actionCreators = reduxCrud.actionCreatorsFor('users');
// actionCreators =>
{
fetchStart: function(data) {
return {
data: data,
type: 'USERS_FETCH_START',
};
},
/*
If data.replace is true, existing records in the store will
be replaced instead of merged.
*/
fetchSuccess: function(users, data) {
return {
data: data,
records: users,
type: 'USERS_FETCH_SUCCESS',
};
},
fetchError: function(error, data) {
return {
data: data,
error: error,
type: 'USERS_FETCH_ERROR',
};
},
/*
The user record must have a client generated key
so it can be inserted in the collection optimistically.
*/
createStart: function(user, data) {
return {
data: data,
record: user,
type: 'USERS_CREATE_START',
};
},
createSuccess: function(user, data) {
return {
data: data,
record: user,
type: 'USERS_CREATE_SUCCESS',
};
},
/*
The user record must have the client generated key
so it can be matched with the record inserted optimistically.
*/
createError: function(error, user, data) {
return {
data: data,
error: error,
record: user,
type: 'USERS_CREATE_ERROR',
};
},
updateStart: function(user, data) {
return {
data: data,
record: user,
type: 'USERS_UPDATE_START',
};
},
updateSuccess: function(user, data) {
return {
data: data,
record: user,
type: 'USERS_UPDATE_SUCCESS',
};
},
updateError: function(error, user, data) {
return {
data: data,
error: error,
record: user,
type: 'USERS_UPDATE_ERROR',
};
},
deleteStart: function(user, data) {
return {
data: data,
record: user,
type: 'USERS_DELETE_START',
};
},
deleteSuccess: function(user, data) {
return {
data: data,
record: user,
type: 'USERS_DELETE_SUCCESS',
};
},
deleteError: function(error, user, data) {
return {
data: data,
error: error,
record: user,
type: 'USERS_DELETE_ERROR',
};
}
}
actionCreatorsFor
takes an optional config object as second argument:
reduxCrud.actionCreatorsFor('users', {key: '_id'});
Don't forget to do the same thing in reducers, with reducersFor
:
reduxCrud.Map.reducersFor('users', {key: '_id'});
The data
attribute in the actions payload is optional. The reducer doesn't do anything with this. This is only provided in case you want to pass extra information in the actions.