#reactjs #react-native #state
#reactjs #react-native #состояние
Вопрос:
всем доброго дня,
В настоящее время я работаю над проектом, основанным на реакции, и у меня есть форма, в которой я обновляю состояние, когда что-то записывается на входные данные.
когда я позже пытаюсь получить доступ к своему состоянию, я получаю cyclic object value
ошибку. после некоторого исследования я выяснил, что это вызвано методом onchange, используемым для каждого из текстовых вводов (2).
ниже приведен мой код и опробованные решения.
Компоненты:
<TextInput
onChange={uname => this.setState(/* { username: uname } */ updateUsername(uname))}
placeholder={strings('login.username')}
style={styles.input}
/>
<TextInput
onChange={pwd => this.setState(/* { password: pwd } */ updatePassword(pwd) ) }
placeholder={strings('login.password')}
style={[styles.input, styles.password]}
secureTextEntry={true}
/>
< TouchableOpacity onPress = { () => this.login()} >
<Text style={styles.btn}>{strings('login.login')}</Text>
</TouchableOpacity>
как вы можете видеть из комментариев внутри реквизита onchange для ввода текста, я попробовал 2 метода обновления состояния:
я попытался обновить его обычным способом, используя метод setState в компоненте. затем я попытался определить 2 функции вне класса, а затем использовать их для обновления класса. ни одно из решений не имело никакого значения.
const updateUsername = (username) => {
return (prevState, currProps) => {
return {...prevState, username}
}
}
const updatePassword = (password) => {
return (prevState, currProps) => {
return {
...prevState,
password
}
}
}
class Login extends Component {
....
}
это функция, в которой я получаю error.it определяется внутри класса компонента и запускается при нажатии кнопки.
login() {
console.log(this.state)
}
мне было интересно, есть ли у кого-нибудь идеи о том, как решить эту проблему.
заранее благодарю всех за ваше время и усилия.
Ответ №1:
Используйте onChangeText
вместо onChange
.
onChange
передает nativeEvent
объект, в то время как onChangeText
просто передает строку.