Note: This is a very new project not ready for production use. It's API will change frequently until v1.0.0.
Reusable upvote component for React applications.
- Thorough testing
 - Improved props API
 
Live demo: echenley.github.io/react-upvote
To build the examples locally, run:
npm install
npm start
Then open localhost:8000 in a browser.
The easiest way to use react-upvote is to install it from NPM and include it in your own React build process (using Browserify, Webpack, etc).
You can also use the standalone build by including dist/react-upvote.js in your page. If you use this, make sure you have already included React, and it is available as a global variable.
npm install react-upvote --save
var Upvote = require('react-upvote');
<Upvote
    voteStatus={ user.votes[postData.id] || 0 }
    upvoteContent={ <i className="upvote-icon fa fa-arrow-up"></i> }
    downvoteContent={ <i className="downvote-icon fa fa-arrow-down"></i> }
    afterContent={ <span className="upvote-count">{ postData.upvotes }</span> }
    shouldAllow={ () => user.isLoggedIn }
    onDisallowed={ () => this.errorMessage('You have to log in!') }
    onUpvote={ () => this.upvotePost(postData.id) }
    onDownvote={ () => this.downvotePost(postData.id) }
    onRemoveVote={ () => this.removeVote(postData.id) }
/>| Property | Type | Default Value | Description | 
|---|---|---|---|
| className | String | 'react-upvote' | 
Class given to the upvote container | 
| voteStatus | Integer | 0 | 
Current user's vote status. Can be -1 (downvoted) 0 (no vote) or 1 (upvoted) | 
| upvoteCount | Integer | 0 | 
The component's current upvote count | 
| shouldAllow | Function | null | 
Function returning a boolean which determines whether to allow the current user to vote. | 
| onDisallowed | Function | null | 
Function called when shouldAllow returns false | 
| onUpvote | Function | null | 
Function called when an upvote is registered | 
| onDownvote | Function | null | 
Function called when a downvote is registered | 
| onRemoveVote | Function | null | 
Function called when undoing a previous vote | 
| upvoteContent | Component | null | 
|
| downvoteContent | Component | null | 
NOTE: The source code for the component is in src. A transpiled CommonJS version (generated with Babel) is available in lib for use with node.js, browserify and webpack. A UMD bundle is also built to dist, which can be included without the need for any build system.
To build, watch and serve the examples (which will also watch the component source), run npm start. If you just want to watch changes to src and rebuild lib, run npm run watch (this is useful if you are working with npm link).
MIT Licensed. Copyright (c) Evan Henley 2015.