mirror of
https://github.com/terribleplan/next.js.git
synced 2024-01-19 02:48:18 +00:00
ab889369d5
* [fix] apollo-redux: Separate out entire example #3463 Apollo and Redux are completely separate ways of managing state. This example serves as a conduit if you were using Apollo 1.X with Redux, and are migrating to Apollo 2.x, however, you have chosen not to manage your entire application state within Apollo (`apollo-link-state`). There is no "withData" function that allows you to call either/or. You must call "withRedux" and/or "withApollo" on your Component. They can be combined in the example at `index.js` or remain separate as seen in `apollo.js` and `redux.js`. Going forward, this example may go the way of the dodo. * [chore] reformat code to match next syntax Localize prettier sometimes has a mind of its own. 😄️ * Fix linting
59 lines
1.3 KiB
JavaScript
59 lines
1.3 KiB
JavaScript
import React from 'react'
|
|
import { graphql } from 'react-apollo'
|
|
import gql from 'graphql-tag'
|
|
|
|
function PostUpvoter ({ upvote, votes, id }) {
|
|
return (
|
|
<button onClick={() => upvote(id, votes + 1)}>
|
|
{votes}
|
|
<style jsx>{`
|
|
button {
|
|
background-color: transparent;
|
|
border: 1px solid #e4e4e4;
|
|
color: #000;
|
|
}
|
|
button:active {
|
|
background-color: transparent;
|
|
}
|
|
button:before {
|
|
align-self: center;
|
|
border-color: transparent transparent #000000 transparent;
|
|
border-style: solid;
|
|
border-width: 0 4px 6px 4px;
|
|
content: '';
|
|
height: 0;
|
|
margin-right: 5px;
|
|
width: 0;
|
|
}
|
|
`}</style>
|
|
</button>
|
|
)
|
|
}
|
|
|
|
const upvotePost = gql`
|
|
mutation updatePost($id: ID!, $votes: Int) {
|
|
updatePost(id: $id, votes: $votes) {
|
|
id
|
|
__typename
|
|
votes
|
|
}
|
|
}
|
|
`
|
|
|
|
export default graphql(upvotePost, {
|
|
props: ({ ownProps, mutate }) => ({
|
|
upvote: (id, votes) =>
|
|
mutate({
|
|
variables: { id, votes },
|
|
optimisticResponse: {
|
|
__typename: 'Mutation',
|
|
updatePost: {
|
|
__typename: 'Post',
|
|
id: ownProps.id,
|
|
votes: ownProps.votes + 1
|
|
}
|
|
}
|
|
})
|
|
})
|
|
})(PostUpvoter)
|