我正在处理一些代码,而且我被困在了这个错误上。当条件为真时,我使用useState钩子,我想要更改值&在输入框中显示值,我得到以下错误: Uncaught :赋值给常量变量。我明白,如果你把它定义为康斯特,你不能改变它的价值,但我不明白为什么。
import React, { useState } from 'react';
const Demo = props=> {
const [userId, setUserid] = useState('abc1@gmail.com');
if (regionData === 'us')) {
userId = 'abc2@gmail.com';
} else {
userId = 'abc3@gmail.com';
}
return (
<div className="col-sm-8">
<input type="text" className="form-control rounded-10" value={userId} name="userid" onChange={(e) => { setUserid(e.target.value); }} />
</div>
)
}
export default Demo;如有任何建议或建议,敬请见谅。
发布于 2022-09-23 08:16:04
既然你是第一次做,为什么不做作业呢?
const [userId, setUserid] = useState(
regionData === 'us'
? 'abc2@gmail.com'
: 'abc3@gmail.com'
);如果您想在regionData更改时更新它,在这种情况下,您需要使用useEffect。
const getUserId = () => {
if (regionData === 'us') {
return 'abc2@gmail.com';
} else {
return 'abc3@gmail.com';
}
};
const [userId, setUserid] = useState(getUserId());
useEffect(() => {
setUserId(getUserId());
// Provided, regionData is a react state coming either
// from props or defined in this component
}, [regionData]);发布于 2022-09-19 13:46:45
如果要更改状态,则应使用setter函数,而不是将值分配给变量。在您的情况下,这将是正确的方法。
useEffect(() => {
if (regionData === 'us')) {
setUserId('abc2@gmail.com')
} else {
setUserId('abc3@gmail.com')
}}, [])另外,请参见react生命周期方法和useEffect钩子。在这种情况下,可能是ComponentDidMount。
发布于 2022-09-19 13:49:45
不能直接修改userId。您必须在useEffect中进行更新。
useEffect(() => {
if (regionData === 'us')) {
setUserId('abc2@gmail.com');
} else {
setUserId('abc3@gmail.com');
}
}, []);如果regionData是props的一部分,请将regionData作为依赖项传递给useEffect。
https://stackoverflow.com/questions/73774284
复制相似问题