如何解决TypeError:无法读取REACTJS中未定义的属性“值”
我在handleChange上收到此错误。我想知道是什么问题?
const [testState,setTestState] = useState({
activeStep:0,firstName: '',lastName: '',email: '',occupation: '',city: '',bio: ''
});
const { activeStep } = testState;
const { firstName,lastName,email,occupation,city,bio } = testState;
const values = { firstName,bio }
const handleChange = (e) => {
const value = e.target.value;
setTestState({
...testState,[e.target.name]: value
});
};
const handleNext = () => {
debugger
const { activeStep } = testState;
setTestState({activeStep:activeStep+1});
};
const handleBack = () => {
debugger
const { activeStep } = testState;
setTestState({activeStep:activeStep-1});
};
我在材料ui步进器中使用它,就像这样。当我单击“下一步”或“后退”按钮时,我希望文本字段数据在那里。希望您熟悉Material Ui Stepper,这将是真正的帮助。
function getStepContent(step) {
switch (step) {
case 0:
return (
<TransportationDetail
handleNext={handleNext}
propsTransportation={propsParent.propsRateDetailsData}
exhandleChange={(e) => exhandleChange(e)}
values={values}
/>
);
case 1:
return (
<Testing 1
handleNext={handleNext}
handleBack={handleBack}
exhandleChange={(e) => exhandleChange(e)}
values={values}
/>
);
case 2:
return (
<Testing 2
handleNext={handleNext}
handleBack={handleBack}
exhandleChange={(e) => exhandleChange(e)}
values={values}
/>
);
default:
return "No data available";
}
}
现在作为道具传递给
const { values,exhandleChange } = props;
并转到文本字段
<TextField
fullWidthid="outlined-size-normal"
variant="outlined"
name="firstName"
onChange={exhandleChange()}
value={values.firstName}
/>
<TextField
fullWidthid="outlined-size-normal"
variant="outlined"
name="lastName"
onChange={exhandleChange()}
value={values.lastName}
/>
解决方法
在testState
可能会损坏的3个易受攻击的地方。
- 在
handleChange
中
- 在
handleNext
中,或 - 在
handleBack
中
看看代码片段,我相信您只是想通过在handleNext和handleBack中将值递增或递减1来更新activeStep
中testState
的值。对于handleChange,您想转到选定的索引。
在这里,我们需要欣赏传播算子coz的美,这只能解决我们的问题。对于handleNext和handleBack,您可以遵循以下代码段,
const handleBack = () => {
const { activeStep } = testState;
const tempState = {...testState}
tempState.activeStep = activeStep - 1
setTestState(tempState);
};
const handleNext = () => {
const { activeStep } = testState;
const tempState = {...testState}
tempState.activeStep = activeStep + 1
setTestState(tempState);
};
const handleChange = (e) => {
const tempState = {...testState}
tempState.activeStep = e
setTestState(tempState);
};
并在调用函数时将组件的selectedIndex传递给handleChange
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。