当我在输入元素中输入第一个字符时,我得到“空字符串”。
function form(props) {
// function getData(e){
// e.preventDefault()
// console.log(e.target[1].value)
const [title, setTitle] = useState("")
function getTitle(e){
setTitle(e.target.value)
console.log(title) //First time shows "empty string"
}
return (
<form >
<div>
<label >Title</label>
<input type="text" name="title" onChange={getTitle} />
</div>
</form>)
在我看来,我在输入元素中输入一个字符,触发“onChange”事件,运行函数getTitle,设置“title”变量,该变量连接到useState钩子,然后控制结果。按照这个推理,我希望输入第一个字符。相反,我得到的是“空字符串”。从第二个字符开始,控制台打印字符。
对于“onInput”,函数也会发生同样的情况。
如何解决这个问题,为什么会发生?
setTitle
asyncronous,必须检查useffect
useEffect(() => {
console.log(title);
}, [title])
设置状态是异步的,因此您的console.log
在设置状态之前运行。如果您使用use效应
钩子来查看状态,您应该会看到值。挂接运行后渲染,因此您将看到当时更新的状态信息。
useEffect(() => {
console.log(title);
}, [title]);
在上面的代码中,执行以下语句时不调用复制构造函数: 既然返回是按值的,为什么不调用复制构造函数? 谢啦
(免责声明:人们通过facebook、firebase等请求询问使用异步操作时数据为空/不正确时,会产生很多问题。我提出这个问题的目的是为每个从android异步操作开始的人提供一个简单的答案。) 我试图从我的一个操作中获取数据,当我使用断点或日志调试它时,值就在那里,但当我运行它时,它们总是空的,我该如何解决这个问题呢? 火力基地 脸书 等。
我正在使用react钩子和contextAPI开发一个简单的MERN stack todo应用程序,我使用axios从mongodb数据库获取数据,并使用useEffect设置initialState数组变量来模拟componentDidMount,然后initialState用作useReducer的参数。我的问题是子组件没有收到initialState,而是收到一个空数组,但是所有其他的道具,
很抱歉问了一个关于已经讨论过很多次的论点的非常基本的问题,我就是想不出答案。我试着在论坛上搜索已经在主题上提出的问题,但没有找到确切的答案(或者不理解)。 当以不同顺序调用时,为什么此函数会打印两次从i到10的数字?它不应该按同样的顺序打印出来吗?我一直听说递归就是这样工作的:每个函数在其代码中调用另一个相同的函数,只应用于较小的域,直到满足结束条件为止。此时,它应该返回(回溯)到原始函数;这就是
问题内容: 在以下示例中,当单击时,将显示而不是。为什么?您将如何解决? 问题答案: React的对帐算法假定没有相反的信息,如果自定义组件出现在后续渲染的同一位置,则它与以前的组件相同,因此将重用前一个实例,而不是创建一个新实例。 如果要实现,则会看到被调用。 不同的节点类型 元素不太可能生成看起来像a 会生成的DOM 。无需花费时间尝试匹配这两种结构,React只是从头开始重建树。 作为推论,
这里,当我返回一个箭头函数insted时,它不起作用: 我知道箭头函数是松散的,这就是为什么我在这里尝试在括号中返回它。没有他们也不行。