javascript - 尝试访问表单处理程序中的状态会在本机反应中给出默认状态而不是更新状态
问题描述
我有一个具有两个状态的组件,name
其email
初始值来自先前的路由,使用 setter 方法时状态确实会发生变化,但是,当我尝试从处理程序访问状态值时,它总是给出默认值 这是代码
const EditProfileScreen = (props) => {
const [name, setName] = useState(props.navigation.getParam('name'))
const [email, setEmail] = useState(props.navigation.getParam('email'))
const nameHandler = (text) => {
setName(text)
}
const emailHandler = text => {
setEmail(text)
}
const handleSubmit =() => {
console.log(name)
// It returns the default value not the updated one
}
return (
<View>
<TextInput style={styles.input} onChangeText={emailHandler} value={email} />
<TextInput style={styles.input} onChangeText={nameHandler} value={name} />
</View>
)}
任何帮助将不胜感激
解决方案
我不确定为什么会发生这种情况,但作为一种解决方法,您可以引入useEffect
钩子:
const [name, setName] = useState('')
const [email, setEmail] = useState('')
useEffect(() => {
setName(props.navigation.getParam('name'))
setEmail(props.navigation.getParam('email'))
}, []);
推荐阅读
- python - 如何获取本地计算机当前使用的代码页?
- javascript - 模板标签内的 Template.QuerySelector 不起作用
- python - 我需要拆分排序列表,并从中创建一个新列表
- java - 如何为 Sonar Bitbucket Cloud 插件禁用 SonarScanner 发布作业操作
- dart - 尽管提供了类型,但 Dart 无法访问泛型类型函数参数的属性
- api - 如何使用 API 休息运行查询?
- python - 如何在超链接中使用变量名?
- javascript - 非常简单的 After Effects 表达式返回“表达式中使用的未定义值”错误
- arrays - 每次循环在 Ansible 中发生时,是否有办法将值存储在数组中?
- python - 短划线排序可编辑表格,但对用户隐藏排序选项