Я понимаю, что это может быть простым, поскольку я новичок в реакции, но я пытаюсь очень просто регистрировать значение ввода всякий раз, когда оно изменяется или отправляется.
Вот код:
import React from "react";
const App = () => {
const onNameChange = (nameInput) => {
console.log("name change Fn", nameInput);
};
return (
<>
<form onSubmit={onNameChange(this.value)}>
<input value='the value' type="text" onChange={console.log(this.value)}></input>
</form>
</>
);
}
export default App
- Почему я не могу щелкнуть внутри формы и изменить значение?
- Как я могу регистрировать значение ввода всякий раз, когда щелкаю внутри и меняю его?
- Как я могу зарегистрировать значение ввода при отправке?
Спасибо ... Вот демонстрация stackblitz: https://stackblitz.com/edit/react-tvk69a < / а>
2 ответа
РЕДАКТИРОВАТЬ: Почему я не могу щелкнуть внутри формы и изменить значение?
Вы передаете жестко закодированное значение в форме Input, вам необходимо заменить его значением, которым вы можете управлять в своих компонентах. Таким образом, вы можете добавить что-нибудь в свое состояние, чтобы отслеживать его, например:
const [value, setValue] = React.useState('')
И вставьте его в свой элемент ввода:
<input value={value}...
Наконец, вам нужно обработать изменения, чтобы состояние обновилось:
<input value={value} onChange={e => setValue(e.target.value)}
Как я могу регистрировать значение ввода всякий раз, когда щелкаю внутри и меняю его?
Вы можете использовать реквизиты onClick и onChange и передать туда свой обработчик:
<button onClick={activateLasers}> Activate Lasers </button>.
<input value={value} onChange={e => setValue(e.target.value)} />
Как я могу зарегистрировать значение ввода при отправке?
В теге вы можете передать свойство onSubmit с вашим обработчиком, которое будет запускаться из его внутреннего type = 'submit'
<form onSubmit={handleSubmit}>
Здесь вы можете увидеть полный пример:
import React, { useState, useEffect } from "react";
const App = () => {
const [textV, setTextV] = useState("the value");
const onNameChange = () => {
event.preventDefault();
console.log("name change Fn", textV);
};
useEffect(() => {
console.log("Text has changed: ", textV);
}, [textV]);
return (
<form onSubmit={onNameChange}>
<input
value={textV}
type="text"
onChange={e => setTextV(e.target.value)}
/>
<button type="submit">Submit</button>
</form>
);
};
export default App;
Вы можете поиграть с ним здесь: https://stackblitz.com/edit/react-ky2cks?file= src / App.js
Объяснение: Чтобы контролировать изменение значения текстовой области, вы должны использовать состояние реакции.
import React, { useState, useEffect } from "react";
const App = () => {
const [textV, setTextV] = useState("the value");
Затем вам понадобится кнопка отправки для вызова события onSubmit в форме.
<form onSubmit={onNameChange}>
<input
value={textV}
type="text"
onChange={e => setTextV(e.target.value)}
/>
<button type="submit">Submit</button>
</form>
В форме вы можете видеть, что я изменяю входное значение с "значения" на {textV}
, потому что textV
- это состояние, которое я объявлял раньше, а в функции onChange я вызываю функцию обработчика состояния, чтобы изменить значение состояние textV
, эта функция позволяет мне обновлять состояние каждый раз, когда изменяется входное значение.
Чтобы регистрировать значение состояния при каждом изменении входного значения, вы можете использовать ловушку useEffect:
useEffect(() => {
console.log("Text has changed: ", textV);
}, [textV]);
Похожие вопросы
Связанные вопросы
Новые вопросы
reactjs
React - это библиотека JavaScript для создания пользовательских интерфейсов. Он использует декларативную компонентную парадигму и стремится быть одновременно эффективным и гибким.