# setResourceMeta

Update one or more individual resources with the same metadata.

## Arguments

1. `options` *(Object)*: An object that defines how to update the metadata. The options are as follows:
   * `resources` *(Array|Object)*: An array of the resources, or resource IDs, to update with the new meta.
   * `newMeta` *(Object)*: The meta to set on each of the resources.
   * `meta` *(Object)*: The current resource meta object from this resource's store slice. Optional when `mergeMeta` is `false`, required otherwise.
   * \[`initialResourceMeta`] *(Object)*: Additional metadata to add to any resource that previously did not have meta.
   * \[`mergeMeta`] *(Boolean)*: Whether or not to merge a resource's old metadata with the new metadata. Defaults to `true`.

## Returns

(`Object`): The new resource meta object.

## Example

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

export default function reducer(state, action) {
  switch (action.type) {
    case (actionTypes.SELECT_MANY_RESOURCES): {
      const meta = setResourceMeta({
        resources: action.resources,
        meta: state.meta,
        newMeta: {
          selected: true
        }
      });

      return {
        ...state,
        meta
      };
    }
  }
}
```

## Tips

* This is used internally within the reducer returned by

  [`resourceReducer`](https://redux-resource.js.org/api-reference/resource-reducer) to update the resource meta in your

  state tree. You will typically only need to use this method if you're writing

  a [plugin](https://redux-resource.js.org/other-guides/custom-action-types).
