【发布时间】:2019-05-13 09:01:34
【问题描述】:
我正在使用useState 来管理状态,它工作正常。但是当我在它的内部返回状态时,它总是初始值
import react, {useState} from 'react'
const MyComponent = () => {
const [myState, setMyState] = useState({
value: 'initial value',
setValue: (newValue) => {
setMyState({...myState, value: newValue})
console.log(myState.value) //<--always is 'initial value'
}
})
return(
<>
<p>{myState.value}</p> //<-- it's working fine
<input value={myState.value} onChange={(e) => myState.setValue(e.target.value)} /> //<--working fine too
</>
)
}
我希望console.log 是输入值,但实际输出始终是初始值
【问题讨论】:
-
该代码无法解析,这使得您很难理解您真正在做什么并帮助您理解问题所在。请使用 minimal reproducible example 来更新您的问题,以展示问题,最好是使用 Stack Snippets(
[<>]工具栏按钮)的 runnable 问题。 Stack Snippets 支持 React,包括 JSX; here's how to do one。 (要使用挂钩,您需要按照那里的说明使用比下拉列表中更新的版本。) -
useState采用的唯一参数是初始状态。在我看来,您希望它采用某种配置对象。你在哪里找到的?正确的行更像是:const [myState, setState] = useState('initial value')就是这样。 -
请问你从哪里得到 usestate() 的语法?
-
出于某种原因,我想在 MyState 中定义函数。
-
@mikenlanggio “出于某种原因”没有用。为了帮助您,我们需要知道为什么。 (在这种情况下,帮助您几乎肯定涉及解释要做什么,而不是在 MyState 中定义您的函数。)
标签: javascript reactjs react-hooks