Я получаю ответ и редукцию, и, потратив пару часов на эту проблему, я все еще не могу удалить документ в базе данных 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
}
}