Не удается удалить данные (doc) из коллекции Firebase при использовании Redux и React - PullRequest
0 голосов
/ 09 апреля 2019

Я получаю ответ и редукцию, и, потратив пару часов на эту проблему, я все еще не могу удалить документ в базе данных Firebase, используя реаги и избыточность.

Я отображаю сводку проектав панели инструментов, и я пытаюсь добавить кнопку удаления.После нажатия на кнопку проект передается в мое действие projectActions.js, где я хочу удалить проект.После этого я хочу отправить тип в projectReducer.js.Я не получаю сообщение об ошибке и не могу вывести ни одного console.log после возврата, когда нажимаю кнопку.Я получаю данные проекта в функцию removeProject.

Я пытался удалить метод return в removeProject () и console.log передаваемого проекта.Я могу получить project.id и добавить его в функцию firestore.collection.delete ().Но поскольку после возврата ничего не работает, это невозможно.

ProjectSummary.js:

import React, { Component } from 'react'
import moment from 'moment'
import { connect } from 'react-redux'
import { removeProject } from '../../store/actions/projectActions'
import { Link } from 'react-router-dom'

class ProjectSummary extends Component {
  state = {
    project: this.props.project
  }

  handleRemove = (e) => {
    e.preventDefault()
    removeProject(this.state.project)
  }

  render() {
    const { project }  = this.props
    return (
      <div className="card z-depth-0 project-summary">
        <div className="card-content grey-text text-darken-3">
        <Link key={project.id} to={'/project/' + project.id}>
          <span className="card-title">{project.title}</span>
        </Link>
        <p>Posted by {project.authorFirstName} {project.authorLastName}</p>
        <p className="grey-text">{moment(project.createdAt.toDate()).calendar()}</p>
          <a className="waves-effect waves-light btn" onClick={this.handleRemove}>Remove</a>
        </div>
      </div>
    )
  }
}

const mapDispatchToProps = (dispatch) =>  {
  return {
    removeProject: (project) => dispatch(removeProject(project))
  }
}

export default connect(null, mapDispatchToProps)(ProjectSummary)

projectActions.js:

export const removeProject = (project) => {
  return (dispatch, getState, { getFirestore }) => {
    const firestore = getFirestore()

    firestore.collection('projects').doc(project).delete()
    .then(() => {
      dispatch({ type: 'REMOVE_PROJECT' })
  }).catch(function(err) {
      dispatch({ type: 'REMOVE_PROJECT_ERROR', err})
    });
  }
}

projectReducer.js:

const projectReducer = (state = initState, action) => {
  switch (action.type) {
    case 'CREATE_PROJECT':
      console.log("Created Project", action.project)
      return state
    case 'CREATE_PROJECT_ERROR':
      console.log('create project error', action.err)
      return state
    case 'REMOVE_PROJECT':
      console.log('Removed Project')
      return state
    case 'REMOVE_PROJECT_ERROR':
      console.log('Removed Project Error', action.err)
      return state

    default:
      return state
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...