【发布时间】:2021-11-03 22:57:01
【问题描述】:
我为输入编写了一个自定义钩子来管理输入的changedhandler、unfocushandler 和reset。我想知道是否可以设置一个初始值,这样当用户进入页面时,输入中已经有一个值,然后可以在之后更改它。
这是自定义钩子:
import { useState } from "react";
const useInput = (validateValue, defaultVal) => {
const [ enteredValue, setEnteredValue ] = useState('');
const [ isTouched, setIsTouched ] = useState(false);
const validInput = validateValue(enteredValue);
const hasError = !validInput && isTouched;
const inputChangedHandler = event => {
setEnteredValue(event.target.value);
}
const inputUnfocusHandler = event => {
setIsTouched(true);
}
const reset = () => {
setEnteredValue('');
setIsTouched(false);
}
return {
value: enteredValue,
isValid: validInput,
hasError,
inputChangedHandler,
inputUnfocusHandler,
reset
}
}
export default useInput;
这是输入:
const {
value: email,
isValid: validEmail,
hasError: emailError,
inputChangedHandler: emailChangedHandler,
inputUnfocusHandler: emailUnfocusHandler,
reset: resetEmail
} = useInput(isEmail);
<label htmlFor='name'>First Name</label>
<input
required
type='text'
id='name'
value={fName}
onChange={fnameChangedHandler}
onBlur={fnameUnfocusHandler}
/>
【问题讨论】:
标签: javascript reactjs input react-hooks