reactjs - React Native 选择器和控制台显示相同状态的不同值

标签 reactjs react-native

我想使用选择器来选择国家/地区:

export default class RegisterMobile extends Component {
    constructor(props) {
        super(props)
        this.state = {
            country: 'india',
        }
    }

    changeCountry = (c) => {
        this.setState({
            country: c,
        })
        console.log(this.state.country);
    }

    render() {
        return(
            <View style={styles.container}>
                <View style={styles.selectCountry}>
                    <Picker selectedValue={this.state.country} onValueChange={this.changeCountry}>
                        <Picker.Item label="India" value="india" />
                        <Picker.Item label="China" value="china" />
                    </Picker>
                </View>
            </View>
        )
    }
}
  • 在模拟器中:

    起初标签是印度。当我从印度选择到中国时,标签更改为中国。同样,如果我选择印度,标签就会更改为印度。

  • 但是,在控制台中:

    首先this.state.country是印度。但是当我从印度选择到中国时,什么都没有改变,只是印度增加了两倍。同样,如果我选择从中国到印度,this.state.country 是中国而不是印度。

我在这里做错了什么?我实在想不通。这应该有效,因为在模拟器中,如果我选择中国/印度,标签会相应更改。我在这里缺少什么?请帮我。谢谢。

最佳答案

this.setState 调用不是同步过程。调用 setState 将其设置为更新批处理。您的 console.log 语句应该在 setState 的回调参数中调用:

this.setState({country: c,},
         ()=>{ console.log(this.state.country)}
 )

参见setState doc

关于reactjs - React Native 选择器和控制台显示相同状态的不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38911548/

相关文章:

reactjs - MUI : how to show tooltip component over selected text?

react-native - createNavigatorFactory 不是函数

react-native - 更改导航标题中后退箭头的颜色

react-native - TouchableOpacity onPress() 不适用于 react-native-modal

reactjs - Apollo Client React 容器将创建的元素添加到分页元素列表中而无需重新获取

javascript - 如何在React中设置子组件的处理程序?

javascript - JS中extends class旁边的<>有什么作用?

reactjs - React Router v4 - 具有更改的默认路由的动态配置

javascript - 模拟器卡在从 10.0.2.2 :8081, 加载是什么问题?

javascript - Babel 6 react JSX 转换器 - 禁用严格