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元素。