GithubHelp home page GithubHelp logo

fernandedios / react-apollo Goto Github PK

View Code? Open in Web Editor NEW

This project forked from apollographql/react-apollo

0.0 2.0 0.0 1.32 MB

:recycle: React higher-order component for Apollo Client

Home Page: http://dev.apollodata.com/react/

License: MIT License

JavaScript 2.57% TypeScript 97.43%

react-apollo's Introduction

React Apollo allows you to fetch data from your GraphQL server and use it in building complex and reactive UIs using the React framework. React Apollo may be used in any context that React may be used. In the browser, in React Native, or in Node.js when you want to server side render.

React Apollo unlike many other tools in the React ecosystem requires no complex build setup to get up and running. As long as you have a GraphQL server you can get started building out your application with React immeadiately. React Apollo works out of the box with both create-react-app and React Native with a single install and with no extra hassle configuring Babel or other JavaScript tools.

React Apollo is:

  1. Incrementally adoptable, so that you can drop it into an existing JavaScript app and start using GraphQL for just part of your UI.
  2. Universally compatible, so that Apollo works with any build setup, any GraphQL server, and any GraphQL schema.
  3. Simple to get started with, you can start loading data right away and learn about advanced features later.
  4. Inspectable and understandable, so that you can have great developer tools to understand exactly what is happening in your app.
  5. Built for interactive apps, so your users can make changes and see them reflected in the UI immediately.
  6. Small and flexible, so you don't get stuff you don't need. The core is under 25kb compressed.
  7. Community driven, Apollo is driven by the community and serves a variety of use cases. Everything is planned and developed in the open.

Get started today on the app you’ve been dreaming of, and let React Apollo take you to the moon!

Installation

It is simple to install React Apollo.

npm install react-apollo --save

That’s it! You may now use React Apollo in any of your React environments.

For an amazing developer experience you may also install the Apollo Client Developer tools for Chrome which will give you inspectability into your React Apollo data.

Usage

To get started you will first want to create an instance of ApolloClient and then you will want to provide that client to your React component tree using the <ApolloProvider/> component. Finally, we will show you a basic example of connecting your GraphQL data to your React components with the graphql() enhancer function.

First we want an instance of ApolloClient. We can import the class from react-apollo and construct it like so:

import { ApolloClient } from 'react-apollo';

const client = new ApolloClient();

This will create a new client that you can use for all of your GraphQL data fetching needs, but most of the time you will also want to create your own custom network interface. By default Apollo Client guesses that your GraphQL API lives at /graphql, but this is not always the case. To use your own network interface you may call the createNetworkInterface function:

import { ApolloClient, createNetworkInterface } from 'react-apollo';

const client = new ApolloClient({
  networkInterface: createNetworkInterface({
    uri: 'https://graphql.example.com',
  }),
});

Replace https://graphql.example.com with your GraphQL API’s URL to connect to your API.

Next you will want to add a <ApolloProvider/> component to the root of your React component tree. This component works almost the same as the <Provider/> component in react-redux. In fact if you pass a store prop into <ApolloProvider/> it will also serve as a provider for react-redux! To use an <ApolloProvider/> with your newly constructed client see the following:

import { ApolloProvider } from 'react-apollo';

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

Now you may create components in this React tree that are connected to your GraphQL API.

Finally, to demonstrate the power of React Apollo in building interactive UIs let us connect one of your component’s to your GraphQL server using the graphql() component enhancer:

import { gql, graphql } from 'react-apollo';

function TodoApp({ data: { todos, refetch } }) {
  return (
    <div>
      <button onClick={() => refetch()}>
        Refresh
      </button>
      <ul>
        {todos.map(todo => (
          <li key={todo.id}>
            {todo.text}
          </li>
        ))}
      </ul>
    </div>
  );
}

export default graphql(gql`
  query TodoAppQuery {
    todos {
      id
      text
    }
  }
`)(TodoApp);

With that your <TodoApp/> component is now connected to your GraphQL API. Whenever some other component modifies the data in your cache, this component will automatically be updated with the new data.

To learn more about querying with React Apollo be sure to start reading the documentation article on Queries. If you would like to see all of the features React Apollo supports be sure to check out the complete API reference.

There is also an excellent Full-stack React + GraphQL Tutorial on the Apollo developer blog.

Documentation

For a complete React Apollo API reference visit the documentation website at: http://dev.apollodata.com/react/api.html

All of the documentation for React Apollo including usage articles and helpful recipes lives on: http://dev.apollodata.com/react/

Recipes

react-apollo's People

Contributors

amannn avatar calebmer avatar drager avatar dsifford avatar gilesb2 avatar glasser avatar greenkeeper[bot] avatar greenkeeperio-bot avatar helfer avatar jacobk avatar jnwng avatar johnthepink avatar kevinzwhuang avatar kimpers avatar koenpunt avatar larixer avatar ligaz avatar mdebbar avatar mmissey avatar nevir avatar rricard avatar shian15810 avatar slava avatar stevepotter avatar therealcisse avatar tmeasday avatar vanuan avatar vovacodes avatar wmertens avatar xavxyz avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.