jmeas/redux-resource

View on GitHub
docs/api-reference/upsert-resources.md

Summary

Maintainability
Test Coverage
# `upsertResources(resources, newResources, [mergeResources])`

Add new or update existing resources in your state tree.

#### Arguments

1. `resources` *(Object)*: The current resources object from your state tree.

2. `newResources` *(Array|Object)*: The new resources to add or update.

3. [`mergeResources`] *(Boolean)*: Whether or not to merge individual resources
  with the existing resource in the store, or to replace it with the new data.
  Defaults to `true`.

#### Returns

(*`Object`*): The updated resources object.

#### Example

```js
import { upsertResources } from 'redux-resource';
import actionTypes from './my-action-types';

export default function reducer(state, action) {
  switch (action.type) {
    case (actionTypes.CREATE_RESOURCES_CUSTOM): {
      const newResources = upsertResources({
        resources: state.resources,
        newResources: action.resources
      });

      return {
        ...state,
        resources: newResources
      };
    }
  }
}
```

#### Tips

- This is used internally within the reducer returned by
  [`resourceReducer`](resource-reducer.md) to add and update resources in the
  store. You will typically only need to use this function if you're authoring a
  [plugin](../other-guides/custom-action-types.md).