react-native - useState() 具有初始值但未反映在状态变量中的钩子
问题描述
我有一个对象myObj
,它是一个data
对象领域。我使用useState
钩子来启动这个对象的状态变量。
myObj
就像{"name": "John", "age": 20, ...}
。
import React, {useState} from 'react';
const myComponent = ({data}) => {
const[student, setStudent] = useState(data.myObj); // myObj is a object with value
console.log(`${JSON.stringfy(student)}`); // it prints undefined, why?
return (
// here I need to render the student information but it is undefined.
)
}
我在这里误用了useState
钩子吗?如果是这样,我怎样才能在 useState 钩子之后立即反映初始对象值,就像上面的控制台日志中显示的那样?
解决方案
据我所知,您的状态student
没有得到刷新。如果是这样,你必须使用useEffect
钩子。
怎么看?
useEffect(() => {
console.log(`${JSON.stringfy(student)}`);
}, [student])
在您的情况下,您使用的是student
外部return
块,这就是控制台没有被打印的原因。一旦成功存储,使用useEffect
您将获得更新。
如果控制台对您来说不重要,那么您可以直接打印学生的值而不使用useEffect
,
return (
<View>
<Text>{student}</Text>
</View>
)
推荐阅读
- c++ - 多线程求和
- javascript - 将输入类型“日期”的当前日期作为默认值的更好方法?
- jquery - jQuery运行没有子元素的focusout功能
- c# - 获取属性的完整路径
- python - 从csv文件中为python中的keras加载数据集
- combinations - 创建组合 sku 产品 C#
- python - 如何使用 if - elif - else 检查元素是否存在
- google-api - 无法通过 Google CardDAV API 的同步收集操作跟踪更改者
- openmdao - 使用索引输入/输出呈现 N² 图时可能存在问题?
- html - CSS Grid 内容留在网格区域内不流出