首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在更改时将useState常量设置为输入值

如何在更改时将useState常量设置为输入值
EN

Stack Overflow用户
提问于 2020-12-11 20:26:35
回答 3查看 342关注 0票数 1

假设我在函数组件中创建了一个变量,如下所示:

代码语言:javascript
运行
复制
const [quizName, setQuizName] = useState("");

如何根据用户在输入中输入的内容更改此值。我的想法是这样的:

代码语言:javascript
运行
复制
<input
    value={quizName}
    onChange={setQuizName(value)}
></input>

但是它不知道值是什么,我如何才能将该值放入我的quizName变量中?

EN

回答 3

Stack Overflow用户

发布于 2020-12-11 20:30:42

代码语言:javascript
运行
复制
<input
    value={quizName}
    onChange={(e)=>setQuizName(e.target.value)}>
</input>
票数 1
EN

Stack Overflow用户

发布于 2020-12-11 20:40:56

最简单的方法是在input的onChange中使用如下函数:

代码语言:javascript
运行
复制
<input value={quizName} onChange={(e)=>setQuizName(e.target.value)} />

没关系!但是看在上帝的份上,请不要再这样做了!

原因如下:

您在每次更改输入时都会创建一个函数并运行它!这是不可以的表现老虎机!尤其是如果你在一个大规模的应用程序中,你的组件中的任何地方都可以做到这一点!

你需要做的就是像下面这样使用useCallback

代码语言:javascript
运行
复制
const [quizName, setQuizName] = useState("");

const handleInputChange = useCallback((e) => {
   setQuizName(e.target.value)
}, [setQuizName])


return (
   <input value={quizName} onChange={handleInputChange} />
)

以下是react文档中对useCallback的描述:

https://reactjs.org/docs/hooks-reference.html#usecallback

票数 1
EN

Stack Overflow用户

发布于 2020-12-11 20:30:20

代码语言:javascript
运行
复制
onChange={setQuizName(value)}

当你像这样调用这个函数时,它将被执行,而不需要等待你去改变它。

代码语言:javascript
运行
复制
onChange={(e) => setQuizName(e.target.value)}

才是正确的做法

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

https://stackoverflow.com/questions/65251360

复制
相关文章

相似问题

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