Невозможно прочитать голосование свойства null firebase

Я пытаюсь создать простую систему голосования в React, но получаю странную ошибку, в которой говорится, что голосование равно нулю, хотя оно определено в моей базе данных и в настоящее время установлено значение 0. Проблема в функции UpvotePost, и я все понимаю. я бы.

Может кто-нибудь объяснить, почему я получаю эту ошибку?

import React, { Component } from "react";
import axios from "axios";
import { Upvote } from "react-upvote";
import { arrowUp } from "react-icons-kit/fa/arrowUp";
import { Icon } from "react-icons-kit";
import app from "../config/dev";
import { Link } from "react-router-dom";
import { ChampsRef, CommentsRef, timeRef } from "./reference";
import { connect } from "react-redux";
import { getsinglechamp } from "../actions/champs";
class Specials extends Component {
  state = {
    comments: [],

    champ_id: "",
    loading: true,
    email: ""
  };
  upvotePost(id) {
    CommentsRef.child(id).transaction(function(Comments) {
      if (Comments) {
        Comments.vote++;
      }
      alert(Comments.vote);
      return Comments;
    });
  }

  componentWillMount() {
    const { dispatch, match } = this.props;
    dispatch(getsinglechamp(this.props.id));
    console.log(this.props);
  }

  componentDidMount() {
    const champ_id = this.props.id;
    CommentsRef.orderByChild("champ_id")
      .equalTo(`${champ_id}`)
      .on("value", snap => {
        const tasks = [];
        let comments = [];
        snap.forEach(child => {
          comments.push({ ...child.val(), key: child.key });
        });
        this.setState({ comments: comments, Loading: false });
      });
  }

  render() {
    const { dispatch, loading } = this.props;
    const { comments, ChampsLoading } = this.state;
    const orderedchamps = comments;

    let commentList;

    if (ChampsLoading) {
      commentList = <div className="TaskList-empty">Loading...</div>;
    } else if (comments.length) {
      commentList = (
        <ul className="TaskList">
          {comments.map(comment => (
            <div className="row">
              <div className="col-lg-6">
                <br /> <br /> <br />
                <div className="cs-counter-tips-list">
                  <div className="cs-counter-tip">
                    <span onClick={() => this.upvotePost(comment.champ_id)}>
                      {" "}
                      <Icon icon={arrowUp} />{" "}
                    </span>

                    <div>
                      <p className="cs-counter-tip-text">{comment.text} </p>{" "}
                    </div>
                  </div>
                </div>{" "}
              </div>
            </div>
          ))}
        </ul>
      );
    }
    return (
      <div className="container">
        <h1>Counter Tips</h1>

        <div className="brace"> </div>

        <p> {commentList} </p>
      </div>
    );
  }
}

const mapStateToProps = state => {
  console.log("champs", state.champs);
  console.log(state.loading);
  return {
    champ: state.champs.champ,
    loading: state.loading
  };
};

export default connect(
  mapStateToProps,
  null
)(Specials);

Где ошибка? Похоже, вы не используете vote где-либо в коде, о котором идет речь в вашем вопросе.

Tholle 10.08.2018 17:30

Комментарии. Голосование в функции upvotePost

Leo Bogod 10.08.2018 17:44

Я пытаюсь добавить 1 голос в комментарий ref, когда вы нажимаете на него, но ничего не сохраняет

Leo Bogod 10.08.2018 17:46

это не из Сomments.Ref

Leo Bogod 10.08.2018 17:49

Похоже, что Comments - это undefined или null, поэтому попытка выполнить alert(Comments.vote); приведет к вашей ошибке. Разве вы не хотите вместо этого обновлять счетчик в своем штате?

Tholle 10.08.2018 17:50

да, но он не будет хранить его в базе данных?

Leo Bogod 10.08.2018 17:52
0
6
22
0

Другие вопросы по теме