1. 实现效果
input
输入框显示的是state
中的数据,state
改变,input
输入框中的值也跟着改变:
手动更改输入框的值,state
也会相应改变:
2. 实现过程
使用 React-Hook,首先定义渲染input
输入框值的state
,初始值为空:
const [inputValue, setInputValue] = useState('');
然后在input
输入框中添加value
属性,属性值为inputValue
,由inputValue
决定显示的内容。
<input type="text" className="inputDemo" value={inputValue} />
然而浏览器会报出警告,意思是给input
添加了value
属性,必须再加上onChange
或者readOnly
属性,要么就将 value 改为defaultValue
:
Warning: You provided a
value
prop to a form field without anonChange
handler. This will render a read-only field. If the field should be mutable usedefaultValue
. Otherwise, set eitheronChange
orreadOnly
.
要实时显示inputValue
的内容,当然不能设置为defaultValue
,也不能设置只读readOnly
,所以加上onChange
事件,里面定义一个函数,功能为根据input
的value
改变状态:
<input
type="text"
className="inputDemo"
value={inputValue}
onChange={e => {
setInputValue(e.target.value);
}}
/>
onChange
里面的函数,接受事件对象为参数,通过事件对象,可以拿到当前的value
。
3. 完整代码
import { useState } from 'react';
import './index.css';
const Demo = () => {
const [inputValue, setInputValue] = useState('');
return (
<>
<input
type="text"
className="inputDemo"
value={inputValue}
onChange={e => {
setInputValue(e.target.value);
}}
/>
</>
);
};
export default Demo;
📘📘欢迎在我的博客上访问:
https://lzxjack.top/