React-apollo+Redux
import { gql, graphql } from 'react-apollo';
import {connect} from 'react-redux';
import React from 'react';
import {addTodo, getTodos} from './action';
@connect((state) => state, (dispatch) => ({
addTodo(todo) {return dispatch(addTodo(todo))},
getTodos(todo) {return dispatch(getTodos(todo))}
}))
@graphql(ADD_QUERY, {
props({ownProps, mutate}) {
return {
addTodo(text) {
mutate({variables: {text}}).then(t => ownProps.addTodo(t.data.addTodo));
}
}
}
})
@graphql(QUERY, {
options(props) {
return {id: props.id};
},
skip: props => typeof window === 'object'
})
export default class TodoApp extends React.Component {
constructor(p, c) {
super(p, c);
}
render() {
const {todosRoot: {todos = []}, addTodo} = this.props;
return (
this._handleInput(e)}/>
addTodo(this._value)}>add
this.props.apollo.refetch()}>Refresh
{todos.map(todo => - {todo.text}
))}
);
}
}
Component