Javascript TypeError:无法读取属性';价值';以反应形式表示的空值
我正在开发一个表单,其中我有一个HTML输入,只需要数字或字母。 我的状态界面的简短形式如下:Javascript TypeError:无法读取属性';价值';以反应形式表示的空值,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,我正在开发一个表单,其中我有一个HTML输入,只需要数字或字母。 我的状态界面的简短形式如下: interface State { location: string; startDate: Date; } const handleChangeLocation = useCallback((event: ChangeEvent<HTMLInputElement>): void => { setState(prevState =>
interface State {
location: string;
startDate: Date;
}
const handleChangeLocation = useCallback((event: ChangeEvent<HTMLInputElement>): void => {
setState(prevState =>
update(prevState, {
location: {$set: event.target.value},
})
);
}, []);
我初始化我的状态如下:
const [state, setState] = useState<State>({
location: '',
startDate: new Date(),
});
const[state,setState]=useState({
位置:“”,
开始日期:新日期(),
});
我的onChangeHandler如下所示:
interface State {
location: string;
startDate: Date;
}
const handleChangeLocation = useCallback((event: ChangeEvent<HTMLInputElement>): void => {
setState(prevState =>
update(prevState, {
location: {$set: event.target.value},
})
);
}, []);
const handleChangeLocation=useCallback((事件:ChangeEvent):void=>{
设置状态(prevState=>
更新(prevState{
位置:{$set:event.target.value},
})
);
}, []);
HTML输入如下所示:
<input id="search-grid-location" className="search-grid-element" type="text"
placeholder="Location"
onChange={handleChangeLocation}/>
当我写的时候,我。E输入中的1没有错误,但当我在第一次输入后写入2时,错误发生。输入字段包含12个字符
错误发生在位置行。见
我调试了应用程序,event.target.value保存了输入值。因此prevState变量可能有错误。我使用功能组件
我使用immutability helper包更新我的状态 在调用
setState
之前,您需要获取event.target.value
的值。执行setState
时(尤其是在使用函数setState时),事件将被清除,因此它的target属性将为null
useCallback((event: ChangeEvent<HTMLInputElement>): void => {
// do this and your error will go away
const {value} = event.target;
setState(prevState =>
update(prevState, {
location: {$set: value},
})
);
}, []);
useCallback((事件:ChangeEvent):void=>{
//这样做,你的错误就会消失
const{value}=event.target;
设置状态(prevState=>
更新(prevState{
位置:{$set:value},
})
);
}, []);
阅读有关的更多信息是否确定
事件
和事件。目标
包含值?错误听起来像事件。目标
为null
Yes值不为null。罗比的解决方案奏效了,而且绝对有道理。仔细检查了event.target.valueI,发现了同样的问题。直接从onChange()调用setState(),它可以处理95%的字段,直到在1个字段上失败为止。我想我和其他人在一起一定很幸运:)