首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >react钩子useState抛出TypeError:对常量变量错误的分配

react钩子useState抛出TypeError:对常量变量错误的分配
EN

Stack Overflow用户
提问于 2022-09-19 13:37:18
回答 4查看 133关注 0票数 0

我正在处理一些代码,而且我被困在了这个错误上。当条件为真时,我使用useState钩子,我想要更改值&在输入框中显示值,我得到以下错误: Uncaught :赋值给常量变量。我明白,如果你把它定义为康斯特,你不能改变它的价值,但我不明白为什么。

代码语言:javascript
运行
复制
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;

如有任何建议或建议,敬请见谅。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2022-09-23 08:16:04

既然你是第一次做,为什么不做作业呢?

代码语言:javascript
运行
复制
const [userId, setUserid] = useState(
  regionData === 'us' 
    ? 'abc2@gmail.com'
    : 'abc3@gmail.com'
);

如果您想在regionData更改时更新它,在这种情况下,您需要使用useEffect

代码语言:javascript
运行
复制
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]);
票数 1
EN

Stack Overflow用户

发布于 2022-09-19 13:46:45

如果要更改状态,则应使用setter函数,而不是将值分配给变量。在您的情况下,这将是正确的方法。

代码语言:javascript
运行
复制
useEffect(() => {
  if (regionData === 'us')) {
  setUserId('abc2@gmail.com')
} else {
  setUserId('abc3@gmail.com')
}}, [])

另外,请参见react生命周期方法和useEffect钩子。在这种情况下,可能是ComponentDidMount

票数 0
EN

Stack Overflow用户

发布于 2022-09-19 13:49:45

不能直接修改userId。您必须在useEffect中进行更新。

代码语言:javascript
运行
复制
useEffect(() => {
  if (regionData === 'us')) {
     setUserId('abc2@gmail.com');
  } else {
     setUserId('abc3@gmail.com');
  }
}, []);

如果regionData是props的一部分,请将regionData作为依赖项传递给useEffect

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73774284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档