Я пытаюсь создать простое приложение для создания списков с использованием 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) для задачи, которую я хочу изменить в пожарном депо.
В случае, если это совершенно неправильно использовать реквизит для этой задачи, что это правильный путь?
Спасибо!