Бесконечный цикл при использовании useDebounceJavascript

Форум по Javascript
Ответить
Anonymous
 Бесконечный цикл при использовании useDebounce

Сообщение Anonymous »

Я создаю проект в React, в котором мне нужно заполнить форму, а затем отправить полученный ответ в мою БД. Для этого я хотел использовать перехватчик useDebounce для отправки отправки после того, как пользователь прекратит взаимодействие. Но когда я попытался это сделать, это привело к бесконечному циклу, и я не знаю, как это реализовать.
Это мой обзор кода:
Сначала у меня есть хук, который выполняет все операции с этим объектом с использованием GraphQL:

Код: Выделить всё

// useRecommendation.js
...
// other operations

export const useUpdate = () => {
const [updateCriteria, { loading, error }] = useMutation(UPDATE_CRITERIA);
const update = { handle: updateCriteria, loading, error };

return update;
};
Затем я импортирую все операции в объект, создающий модель:

Код: Выделить всё

// Recommendation.js
const Recommendation = {
all: useGetAll,
byCategory: useGetByCategory,
create: useCreate,
update: useUpdate
}

export default Recommendation
А затем я импортирую этот объект в свой обработчик компонента:

Код: Выделить всё

export const useRecommendationFormHandler = ({ form }) => {
const updateRecommendation = Criteria.update();

const submitRecommendation = async () => {
try {
const { data } = await updateRecommendation.handle({
variables: {
input: {
conformity: form.conformity,
importance: form.importance,
comment: form.comment,
conclusion: form.conformity === 0 && form.importance !== null,
},
criteria_id: form.id
}
});

return data;
} catch (error) {
console.error("Erro ao atualizar a criteria", error);
}
};

return {
isLoading: updateRecommendation.loading
}
};
Я думаю, важно сказать, что компонент, который я пытаюсь использовать useDebounce, визуализируется внутри цикла:

Код: Выделить всё

      
{forms.length !== 0 && criterias.data.map((data, i) => (
 f.id === data.id)}
onChange={handleChange}
index={i}
onRefetch={onRefetch}
/>
))
}

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

Подробнее здесь: https://stackoverflow.com/questions/793 ... sedebounce
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»