#reactjs
#reactjs
Вопрос:
Я хотел бы очистить ввод формы после отправки формы, но я не могу. Как я могу это сделать
Это мой код для этого
const onHandleSubmit = (e) => {
if (values.name.trim() === "") {
setIsValid(false);
}
else {
createProductRequest(values, imageAsFile);
}
};
Это мое значение setdefaultValue
const [values, setValues] = useState({
image: "",
name: "",
price: 0,
description: "",
categoty: "",
});
Это моя кнопка в форме
<Button
btnText="Submit"
size="btn-md"
onClick={onHandleSubmit}
disabled={isValid}
/>
Моя кнопка импортирована из другой папки, поэтому я должен сделать так
Они требуют, чтобы я установил это в useEffect
useEffect(() => {
if (type.CREATE_PRODUCT_SUCCESS) {
fetchProductRequest();
}
}, [fetchProductRequest, type]);
Я должен сделать вот так
useEffect(() => {
if (type.CREATE_PRODUCT_SUCCESS) {
fetchProductRequest();
const defaultValues = {
image: "",
name: "",
price: 0,
description: "",
categoty: "",
}
setValues(defaultValues)
}
}, [fetchProductRequest, type
]);
Но это не работает
Я настраиваю свою форму из react-bootstrap
Спасибо за вашу помощь.
Ответ №1:
Просто добавьте :
setValues({
image: "",
name: "",
price: 0,
description: "",
categoty: "",
})
после createProductRequest(values, imageAsFile);
Нравится :
else {
createProductRequest(values, imageAsFile);
setValues({
image: "",
name: "",
price: 0,
description: "",
categoty: "",
})
}
Комментарии:
1. Но я не разрешаю подобное, потому что по какой-то причине это может привести к сбою!
2. У меня есть ответ на мой вопрос выше, не могли бы вы помочь мне, пожалуйста, проверьте его еще раз, и можете ли вы поддержать меня
Ответ №2:
Лучше не вызывать запросы из тела компонента, чтобы избежать проблем с синхронизацией данных в хранилище. Для этих целей используйте промежуточные программы, такие как redux-thunk или redux-sagas. В них после успешного ответа от сервера вызовите метод для очистки ввода:
const defaultValues = {
image: "",
name: "",
price: 0,
description: "",
categoty: "",
}
setValues(defaultValues)