#javascript #reactjs #react-hook-form
#javascript #reactjs #реагировать-привязка-форма
Вопрос:
Я использовал useRef в этом компоненте, и он хорошо работает, когда мне нужно обратиться к входному значению, но когда я заканчиваю и нажимаю кнопку отправки, он работает хорошо, но в поле ввода все еще есть работа, которую я написал
просто мне нужно очистить поле ввода при нажатии кнопки отправки, без использования функции useState и Onchange, потому что это вызывает слишком рендеринг
есть ли какой-либо метод в useRef, который помогает мне очистить поле ввода
вот код
const AddTodoForm = () => {
const inputRef = useRef()
const createTodo = (e) => {
e.preventDefault()
const todoRef = fire.database().ref("Todo");
const todo = {
title: inputRef.current.value,
complete: false
};
todoRef.push(todo)
// I Need To Empty input value here
}
return (
<form>
<input type="text" ref={inputRef} />
<button onClick={createTodo}> Add Todo </button>
</form>
)
}
Ответ №1:
Очистите ввод после отправки to do is the way.
const AddTodoForm = () => {
const inputRef = useRef()
const createTodo = (e) => {
e.preventDefault()
const todoRef = fire.database().ref("Todo");
const todo = {
title: inputRef.current.value,
complete: false
};
todoRef.push(todo)
inputRef.current.value = ""
}
return (
<form>
<input type="text" ref={inputRef} />
<button onClick={createTodo}> Add Todo </button>
</form>
)
}
Комментарии:
1. Спасибо, чувак, я пытался сделать это решение, прежде чем спрашивать, но у меня это не сработало, потому что я набрал « == « два равных 🙂 большое спасибо
Ответ №2:
Просто получите текущий DOM в rer и установите значение «» ( inputRef.current.value = "";
). Пример:
import React, { useRef, useState } from "react";
export default function DisableElevation() {
const [todos, setTodos] = useState([]);
const addTodo = (todo) => {
setTodos([...todos, todo]);
};
return (
<div>
<AddTodoForm addTodo={(todo) => addTodo(todo)} />
{todos.map((todo) => (
<div> {todo.title} </div>
))}
</div>
);
}
const AddTodoForm = ({ addTodo }) => {
const inputRef = useRef();
const createTodo = (e) => {
e.preventDefault();
const todo = {
title: inputRef.current.value,
complete: false
};
inputRef.current.value = "";
addTodo(todo);
// I Need To Empty input value here
};
return (
<form>
<input type="text" ref={inputRef} />
<button onClick={createTodo}> Add Todo </button>
</form>
);
};