React中的Reddit式投票系统

时间:2017-08-24 20:25:08

标签: javascript reactjs web redux voting-system

我试图在React中创建类似reddit的投票系统。 。我创建了一个更大的应用程序,涉及Redux,我试图将当前得分作为道具传递给投票组件并将结果保存到商店。我碰到了墙,我无法弄清楚这样做的正确方法。

我是否应该在reducer中处理算法,并且只有来自投票组件的调度操作,如果组件保持其自己的本地状态,并且仅调度具有当前分数作为参数的操作?

  

这是我过去创建的旧实现。这很简单   为其目的工作得很好的投票系统。不过就是这样   从来没有真正存储保存结果,只是在DOM中显示它:   var React = require(' react');

var Voting = React.createClass({
  getDefaultProps: function() {
    return {
      number: liczba,
      upvote: 'upvote',
      downvote: 'downvote'
    };
  },
  getInitialState: function () {
    return{
      upvoted: false,
      downvoted: false
    };
  },
  upvote: function () {
    this.setState({
      upvoted: !this.state.upvoted,
      downvoted: false
    });
  },
  downvote: function () {
    this.setState({
      upvoted: false,
      downvoted: !this.state.downvoted
    });
  },
  render: function () {
    var {number, upvote, downvote} = this.props;
    var {upvoted, downvoted} = this.state;

    function voting(){
      if(upvoted){
        number++;
        upvote = 'upvote-active';
      } else if(downvoted){
        number--;
        downvote = 'downvote-active';
      }
    };

    voting();
    return(
      <div className="vote">
        <div className={upvote} onClick={this.upvote}></div>
        <div className="score">{number}</div>
        <div className={downvote} onClick={this.downvote}></div>
      </div>
    );
  }
});

module.exports = Voting;

0 个答案:

没有答案