如何解决如何使用React钩子创建带有参数的受控输入并传递事件对象?
我正在尝试制作表单并创建受控输入,我在window.event
之前就使用过,但是此方法已被弃用,尽管我使用它,但我不想再使用它,尽管该解决方案可以按我的方式工作,但是我担心兼容性,但是如果我不使用它,我尝试使用了syndicateEvent,但它不起作用,我尝试了两种使用.bind()添加事件的方法,该方法不起作用会导致出现以下错误: t在初始化之前访问输入,setInputs,第二次使用SyntheticEvent(e)=> {changeHandler}
当我写第二个字母时,它崩溃并出现错误,无法读取null的属性ID,这是怎么回事,这可能与钩子有关吗,或者我应该与类一起使用?
const changeHandler = (inputs,setInputs,clone,event) => {
const cloned = clone(inputs[event.target.id]);
cloned.config.value=event.target.value;
setInputs(prevstate=>{
return {
...prevstate,[event.target.id]:cloned
}
})
};
使用useState的输入配置我作为道具传递给我的自定义输入组件
const [inputs,setInputs] = useState({
username: {
config: {
type: "text",placeholder: "John Doe",id: "username",value: "",onChange: changeHandler.bind(this,inputs,cloneDeep)
},label: {
label: "Username *",htmlFor: "username",},email: {
config: {
type: "email",placeholder: "johndoe@example.com",id: "email2",onChange: (e) => {
changeHandler(inputs,cloneDeep,e);
},label: {
label: "E-mail *",htmlFor: "email2",});
编辑:出于性能原因,此合成事件被重用。如果看到此消息,说明您正在访问已发布/无效的合成事件中的属性target
。设置为空。如果必须保留原始的合成事件,请使用event.persist()
。
使用event.persist()
解决了问题,但我想知道可以使用吗?
解决方法
我能够使用event.persist()
来修复它,从而防止了原始事件的无效化,这就是为什么第二次触发该事件时,我收到有关尝试访问null属性的错误
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。