我正在创建一个表单构建器作为react。在一个简单的文本字段上,我需要:
- 改变
currentValue
- 当
currentValue
更改时,验证它 - 验证完成后,发出一个事件(有效或无效)
这是我的代码:
const TextInput = ({ props }) => {
const [currentValue, setCurrentValue] = useState(props.initialValue);
const [validationState, setValidationState] = useState(false);
const validate = () => {
if (!currentValue) {
setValidationState(false);
}
else {
setValidationState(true);
}
}
useEffect(() => {
validate();
}, [currentValue]);
useEffect(() => {
emitter.emit('textInputChange', { currentValue, validationState});
}, [validationState]);
}
但是,我现在遇到validationState
了这个问题,如果我只依赖于发出更改,一旦TextInput
生效,就会停止发出。我需要在每次更改时发出。
但是如果我也依赖currentValue
,那么由于validationState
不同步,我可以获得无效状态。换句话说,currentValue
可能是有效的,但我invalid
从以前未更新的validationState
.
我应该如何解决这个问题?