0.3.6 • Published 5 years ago

redux-wasp-apollo v0.3.6

Weekly downloads
6
License
MIT
Repository
github
Last release
5 years ago

redux-wasp-apollo

code style: prettier

All Contributors

v0.2.0 (beta)


Provides integration between redux-wasp and apollo-link-state.

For the base query, mutation, and subscription, check out wasp-graphql.

For additional features unique to Redux, check out redux-wasp.

For a live, full-stack application showcasing redux-wasp in action, go here.

Purpose

Updating to Apollo 2.0+ and don't want to completely remove redux store/state? Just use ReduxWaspApollo to bridge the gap between the two! Pass in the new data you need to update Apollo's Cache with and let ReduxWaspApollo do the rest.

Usage

Pass your Apollo Client down as a prop. Pass props into the ReduxWaspApollo functions.

Example

index.js

import React from 'react';
import { Provider } from 'react-redux';
import store from './store';
import ReactDOM from 'react-dom';
import App from './components/app';

import { ApolloProvider } from 'react-apollo';
import { ApolloClient } from 'apollo-client';
import { HttpLink } from 'apollo-link-http';
import { InMemoryCache } from 'apollo-cache-inmemory';

const client = new ApolloClient({
  link: new HttpLink({ uri: 'http://localhost:3000/graphql' }),
  cache: new InMemoryCache()
});

ReactDOM.render(
  <ApolloProvider client={client}>
    <Provider store={store}>
      <App client={client} />
    </Provider>
  </ApolloProvider>,
  document.getElementById('root')
);

app.js

import React, { Component } from 'react';
import { connect } from 'react-redux';
import * as queries from './queries/queries';

// Wasp Links
import WaspLinkMutate from 'WaspReduxApolloLinkMutate';
import WaspLinkQuery from 'WaspReduxApolloQuery';

// Wasp Fetch
import WaspFetch from 'WaspFetch';

let API = 'http://localhost:3000/graphql';

const mapStateToProps = state => {
  return {
    user: state
  };
};
class App extends Component {
  constructor(props) {
    super(props);
  }

  getUsers(e, props) {
    e.preventDefault();
    // Wasp Query usage
    // Passing in props with Client passed down, as well as, the query to be used
    WaspLinkQuery(props, queries.getAllUsers);
    // Get information with WaspFetch
    WaspFetch(API, queries.getAllUsersWaspFetch);
  }
  render() {
    return (
      <div>
        <button onClick={e => this.getUsers(e, this.props)}>Get Users</button>
      </div>
    );
  }
}

export default connect(mapStateToProps)(App);

queries.js

import gql from 'graphql-tag';

let addUser = gql`
  mutation addUser($name: String!, $pass: String!) {
    addUser(name: $name, password: $pass) {
      userName
      userPass
    }
  }
`;

let getUser = gql`
  query($id: ID!) {
    user(id: $id) {
      userName
    }
  }
`;
let getAllUsers = gql`
  {
    getUsers {
      userName
    }
  }
`;

export { addUser, getUser, getAllUsers };

Contributors

Thanks goes to these wonderful people (emoji key):

marcecaReynolds A ColonDenny Templekamo31

This project follows the all-contributors specification. Contributions of any kind welcome!

Code of Conduct

Read our Code of Conduct here.

License

Open Sourced under the MIT License.

0.3.6

5 years ago

0.3.4

5 years ago

0.3.3

5 years ago

0.3.2

5 years ago

0.3.0

5 years ago

0.2.2

6 years ago

0.2.1

6 years ago