onChange
)更新组件的state。import React, { useState } from 'react';
function ControlledComponent() {
const [inputValue, setInputValue] = useState('');
const handleChange = (event) => {
setInputValue(event.target.value);
};
const handleSubmit = (event) => {
event.preventDefault();
console.log(inputValue);
};
return (
<form onSubmit={handleSubmit}>
<input type="text" value={inputValue} onChange={handleChange} />
<button type="submit">Submit</button>
</form>
);
}
export default ControlledComponent;
在这个例子中,inputValue
保存在组件的state中,input
元素的值通过value
属性与inputValue
同步,handleChange
函数更新inputValue
。
ref
来直接访问DOM元素,获取或设置表单元素的值。import React, { useRef } from 'react';
function UncontrolledComponent() {
const inputRef = useRef(null);
const handleSubmit = (event) => {
event.preventDefault();
console.log(inputRef.current.value);
};
return (
<form onSubmit={handleSubmit}>
<input type="text" ref={inputRef} />
<button type="submit">Submit</button>
</form>
);
}
export default UncontrolledComponent;
在这个例子中,inputRef
引用了input
元素,通过inputRef.current.value
可以获取输入值,而不需要通过组件的state管理。
受控组件:
非受控组件:
ref
来直接访问DOM元素。