https://github.com/drawbotics/react-apollo-redux
A small wrapper to automatically dispatch actions in response to apollo mutations.
https://github.com/drawbotics/react-apollo-redux
Last synced: 6 months ago
JSON representation
A small wrapper to automatically dispatch actions in response to apollo mutations.
- Host: GitHub
- URL: https://github.com/drawbotics/react-apollo-redux
- Owner: Drawbotics
- License: mit
- Created: 2017-11-28T16:32:15.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-02-06T16:28:59.000Z (over 7 years ago)
- Last Synced: 2024-11-16T10:36:41.950Z (6 months ago)
- Language: JavaScript
- Size: 78.1 KB
- Stars: 57
- Watchers: 3
- Forks: 9
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# React Apollo Redux
[](https://www.npmjs.com/package/react-apollo-redux)
[](https://www.npmjs.com/package/react-apollo-redux)
[](LICENSE)This library wraps the `graphql` function from [react-apollo](https://github.com/apollographql/react-apollo) function by also dispatching redux actions when a mutation is called.
If you were using
```js
import { graphql } from 'react-apollo';
```
you may now do
```js
import { graphql } from 'react-apollo-redux';
```### Usage
When a mutation is called, an action bearing the same name (snake and upper cased) and prefixed with `@@MUTATION` is dispatched. For example, a mutation like this
```js
const FollowItems = gql`
mutation followItems($itemIds: [ID]!) {
followItems(item_ids: $itemIds) {
id,
},
}
`;graphql(FollowItems, {
name: 'followItems',
}),
```
Will dispatch the following actions with respective types:#### type @@MUTATION/FOLLOW_ITEMS
`@@MUTATION/[name]` contains the arguments to the mutation in its payload. For example, if the mutation was called this way
```js
followItems({
variables: {
itemIds: itemIds,
},
extra: {
user,
references,
},
});
```
The payload will contain that object.#### type @@MUTATION/FOLLOW_ITEMS_SUCCESS
`@@MUTATION/[name]_SUCCESS` is dispatched once the mutation result is successfully returned from the server. The action payload contains two things:
- The `result` from the server (as specified in the mutation)
- The arguments (`args`) passed to the mutation, like above#### type @@MUTATION/FOLLOW_ITEMS_FAIL
`@@MUTATION/[name]_FAIL` is dispatched if the server returns an error. This action contains the same payload as the initial action `@@MUTATION/FOLLOW_ITEMS`, and has an additional `meta` property with the error returned from the server.