#javascript #reactjs
#javascript #reactjs
Вопрос:
Я извлекаю данные из серверной части и отображаю их на интерфейсе reactjs. У меня есть форма, в которую мы вводим некоторую строку во ввод, затем она отображает вывод. Я должен обновлять страницу каждый раз, чтобы отображать новые данные. Я хочу установить для своего состояния значение null после того, как мы нажмем кнопку отправки. Проблема здесь в том, что у меня уже есть один обработчик событий, назначенный кнопке отправки. Как я могу установить для своего состояния значение null после нажатия кнопки отправки и одновременно отобразить мои выходные данные.
const [myData, setMyData] = useState(null);
const [endP, setEndP] = useState(null);
const inputHandler = (event) => {
setMyData(event.target.value);
};
const buttonHandler = (event) => {
event.preventDefault();
setEndP(`http://localhost:1000/userData?Q=${myData}`);
};
<form onSubmit={buttonHandler}>
<input type="text" onChange={inputHandler} />
<button type="submit">Get It</button>
</form>;
Комментарии:
1. вы пробовали
const inputHandler = (event) => { myData = event.target.value; setMyData({ myData }); };
Ответ №1:
Вы можете выполнить это, сделав поле ввода в вашей форме контролируемым вводом, предоставив value
атрибут и onChange
обработчик. при этом initialState myData
не может быть нулевым, если вы изначально установите для него значение null, ваше поле ввода будет заблокировано, и вы не сможете изменить его значение. Подробнее здесь Управляемый ввод
const FormComponent = (props) => {
const [myData, setMyData] = useState("");
const [endP, setEndP] = useState(null);
const inputHandler = (event) => {
setMyData(event.target.value);
};
const buttonHandler = (event) => {
event.preventDefault();
setEndP(`http://localhost:1000/userData?Q=${myData}`);
setMyData('')
};
return (
<form onSubmit={buttonHandler}>
<input value={myData} type="text" onChange={inputHandler} />
<button type="submit">Get It</button>
</form>
)
}
Ответ №2:
Я, вероятно, думаю, что вам нужно отменить event.preventDefault(), Чтобы ваша страница обновлялась автоматически, поскольку тип вашей кнопки — submit, и состояние снова будет изменено на null
Комментарии:
1. Страница также будет обновляться таким образом автоматически
2. Я не могу получить данные после отмены event.preventDefault()