Попытка получить доступ к состоянию в обработчике формы дает состояние по умолчанию, не обновленное состояние в реакции native - PullRequest
1 голос
/ 08 июля 2020

У меня есть компонент с двумя состояниями name и email, чьи начальные значения поступают из предыдущего маршрута, состояние меняется при использовании методов установки, но когда я пытаюсь получить доступ к значениям состояния из обработчика, он всегда дает значения по умолчанию Вот код

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>
)}

Любая помощь будет оценена

1 Ответ

1 голос
/ 08 июля 2020

Я не уверен, почему это происходит, но в качестве обходного пути вы можете ввести ловушку useEffect:

const [name, setName] = useState('')
const [email, setEmail] = useState('')

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