REACT NATIVE - this.setState 在 onChangeText 中不起作用
REACT NATIVE - this.setState doesn't work inside onChangeText
我正在尝试使用性别选择在此处创建有条件的 onPress。如果性别未定义,我将无法继续。非常简单。但我是新手,我没有发现这里的问题。
这是州的性别支柱...
constructor(props) {
super(props);
this.state = {
gender: ''
};
这就是具有这 3 个性别值的 const genderSelect...
render() {
const genderSelected = [
{ value: 'Feminino', label: 'Feminino' },
{ value: 'Masculino', label: 'Masculino' },
{ value: 'Outro', label: 'Outro' }
];
...
}
那是我的下拉列表 class,我在其中调用 genderSelect 并尝试使用 setState(但它不起作用,'console.log' 一直返回 'undefined')。最后,这是我的条件 onPress。
return (
<>
<Dropdown
label='Selecione...'
data={genderSelect}
baseColor={"white"}
textColor={"white"}
itemColor={"white"}
pickerStyle={{
backgroundColor: "black"
}}
onChangeText={(value) => {
this.setState({ gender : value })
console.log(this.gender)
}}
/>
<TouchableOpacity
style={styles.buttonContainer}
onPress= {()=>{
if (this.gender != undefined ) {
console.log(this.gender)
this.props.navigation.navigate("Abas")
}
else {
console.log(this.gender)
Alert.alert('Ops!','Favor preencher sua idade e gênero antes!');
}
}}
>
<Text style={styles.buttonText}>CONFIRMAR</Text>
</TouchableOpacity>
顺便说一句,我想问题发生在 onChangeText / setState 部分。不管我之后怎么用'if / else',它一直返回'undefined'.
我知道,这可能是一个简单的问题,我没有找到原因。我对此进行了很多搜索,但 none 的答案确实对我有所帮助。希望有人能帮助我。
将this.gender
替换为this.state.gender
那是错误。gender
是一个状态变量,因此您必须这样访问它。
在你的 return
部分改变这个
<TouchableOpacity
style={styles.buttonContainer}
onPress={() => {
if (this.state.gender != undefined) {
console.log(this.state.gender);
this.props.navigation.navigate('Abas');
} else {
console.log(this.state.gender);
Alert.alert('Ops!', 'Favor preencher sua idade e gênero antes!');
}
}}>
<Text style={styles.buttonText}>CONFIRMAR</Text>
</TouchableOpacity>
我正在尝试使用性别选择在此处创建有条件的 onPress。如果性别未定义,我将无法继续。非常简单。但我是新手,我没有发现这里的问题。
这是州的性别支柱...
constructor(props) {
super(props);
this.state = {
gender: ''
};
这就是具有这 3 个性别值的 const genderSelect...
render() {
const genderSelected = [
{ value: 'Feminino', label: 'Feminino' },
{ value: 'Masculino', label: 'Masculino' },
{ value: 'Outro', label: 'Outro' }
];
... }
那是我的下拉列表 class,我在其中调用 genderSelect 并尝试使用 setState(但它不起作用,'console.log' 一直返回 'undefined')。最后,这是我的条件 onPress。
return (
<>
<Dropdown
label='Selecione...'
data={genderSelect}
baseColor={"white"}
textColor={"white"}
itemColor={"white"}
pickerStyle={{
backgroundColor: "black"
}}
onChangeText={(value) => {
this.setState({ gender : value })
console.log(this.gender)
}}
/>
<TouchableOpacity
style={styles.buttonContainer}
onPress= {()=>{
if (this.gender != undefined ) {
console.log(this.gender)
this.props.navigation.navigate("Abas")
}
else {
console.log(this.gender)
Alert.alert('Ops!','Favor preencher sua idade e gênero antes!');
}
}}
>
<Text style={styles.buttonText}>CONFIRMAR</Text>
</TouchableOpacity>
顺便说一句,我想问题发生在 onChangeText / setState 部分。不管我之后怎么用'if / else',它一直返回'undefined'.
我知道,这可能是一个简单的问题,我没有找到原因。我对此进行了很多搜索,但 none 的答案确实对我有所帮助。希望有人能帮助我。
将this.gender
替换为this.state.gender
那是错误。gender
是一个状态变量,因此您必须这样访问它。
在你的 return
部分改变这个
<TouchableOpacity
style={styles.buttonContainer}
onPress={() => {
if (this.state.gender != undefined) {
console.log(this.state.gender);
this.props.navigation.navigate('Abas');
} else {
console.log(this.state.gender);
Alert.alert('Ops!', 'Favor preencher sua idade e gênero antes!');
}
}}>
<Text style={styles.buttonText}>CONFIRMAR</Text>
</TouchableOpacity>