Состояние фильтра реакции не перерисовывается - PullRequest
0 голосов
/ 09 мая 2018

У меня есть дескриптор удаления, который отправляет запрос в службу.

  handleDelete = async studentId => {
    try {
      await axios.delete(`/students/${studentId}`).then(() =>
        this.setState({
          students: this.state.students.filter(
            student => student._id !== studentId
          ),
        })
      )
    } catch (e) {
      console.log(`Error: ${e}`)
    }
  }

Когда я фиксирую a axios.delete и просто вызываю this.setState, он выполняет фильтрацию так, как я хочу.

Почему я не могу форсировать состояние с новыми данными?

Редактировать: это моя функция для удаления на бэкэнде.

exports.deleteStudent = async (req, res) => {
  try {
    await Student.findByIdAndRemove(req.params.studentId)
    res.status(204)
  } catch (e) {
    console.log(`Error: ${e}`)
  }
}

1 Ответ

0 голосов
/ 09 мая 2018

Поскольку вы используете async-await, вам нужно выполнить обещание. Также используйте functional setState.

handleDelete = async studentId => {
    try {
        await axios.delete(`/students/${studentId}`)
        this.setState(prevState => ({
          students: prevState.students.filter(
            student => student._id !== studentId
          )
        }))
    } catch (e) {
      console.log(`Error: ${e}`)
    }
  }

Проверьте это для более подробной информации о when to use functional setState

...