【问题标题】:Trying to access state in form handler gives default state not updated state in react native尝试访问表单处理程序中的状态会在本机反应中给出默认状态而不是更新状态
【发布时间】:2020-07-08 17:12:16
【问题描述】:

我有一个组件有两个状态 nameemail 其初始值来自先前的路线, 使用 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>
)}

任何帮助将不胜感激

【问题讨论】:

    标签: javascript reactjs react-native react-hooks


    【解决方案1】:

    我不确定为什么会发生这种情况,但作为一种解决方法,您可以引入 useEffect 挂钩:

    const [name, setName] = useState('')
    const [email, setEmail] = useState('')
    
    useEffect(() => {
      setName(props.navigation.getParam('name'))
      setEmail(props.navigation.getParam('email'))
    }, []);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-16
      • 2021-11-09
      • 2020-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-11
      • 1970-01-01
      相关资源
      最近更新 更多