React Hooks и Firestore -> Невозможно выполнить обновление состояния React на отключенном компоненте - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь создать простое приложение для создания списков с использованием firestore и реакционных хуков. Приложение работает нормально, но выдает ошибку в консоли, когда установлен флажок:

Предупреждение. Невозможно выполнить обновление состояния React на отключенном компоненте. Это неоперация, но она указывает на утечку памяти в вашем приложении. Чтобы исправить, отмените все подписки и асинхронные задачи в функции очистки useEffect. в CheckBox (в списке заметок. js: 86) в формате td (в списке заметок. js: 85) в tr (в списке заметок. js: 84)

Компонент флажка:

import React, { useState } from "react";
import firebase from "../FirebaseData";

const CheckBox = (props) => {
  const [isDone, setIsDone] = useState(props.each.isDone);

  const handleDone = () => {
    const notesDb = firebase.firestore().collection("notes");
    notesDb
      .doc(props.each.id)
      .update({
        isDone: !isDone,
      })
      .then(() => {
        setIsDone(!isDone);
      });
  };

  let isCheck = props.each.isDone ? true : false;

  return (
    <input
      style={{ marginLeft: "35%" }}
      type="checkbox"
      checked={isCheck}
      onChange={handleDone}
    />
  );
};

export default CheckBox;

Я думаю, что проблема решена, потому что я использую реквизиты для передачи некоторой информации о пожарном депо. В целом нормально ли передавать реквизиты из базы данных реального времени компоненту?

Я пытался включить useEffect внутри handleDone () и app cra sh и сказать что-то вроде

"useEffect" вызывается в функции, которая не является ни функцией React компонент или пользовательский React Hook

Затем я попытался взять handleDone () и преобразовать его в useHandleDone () вне компонента CheckBox но я не уверен, как получить идентификатор для do c (id) для задачи, которую я хочу изменить в пожарном депо.

В случае, если это совершенно неправильно использовать реквизит для этой задачи, что это правильный путь?

Спасибо!

...