【发布时间】:2019-09-23 17:34:07
【问题描述】:
我正在制作一个用于更改 Google Maps API 类型的菜单,但按下的状态没有按我的预期工作。请注意,在函数setPressedState 上更改this.state.pressed 后,Text 组件内的状态不会被重新渲染,并且在使用getPressed 后,它不会在包含MapMenu 组件的组件上重新渲染。
注意:警报显示按下的状态正在改变。
class MapMenu extends Component{
constructor(props){
super(props);
this.state = {
pressed: 'standard'
}
}
setPressedState(press){
this.state.pressed = press;
Alert.alert(this.state.pressed)
}
getPressed(){
return(this.state.pressed);
}
render(){
return(
<View style={styles.container}>
<View style={{backgroundColor: 'red'}}><Text>{this.state.pressed}</Text></View>
<TouchableOpacity style={styles.button}
onPress={() => this.setPressedState('standart')}
>
<Text>Mapa</Text>
</TouchableOpacity>
<TouchableOpacity style={styles.button}
onPress={() => this.setPressedState('hybrid')}
>
<Text>Hibrido</Text>
</TouchableOpacity>
<TouchableOpacity style={styles.button}
onPress={() => this.setPressedState('satellite')}
>
<Text>Satellite</Text>
</TouchableOpacity>
</View>
);
}
}
【问题讨论】:
-
使用
this.setState(key,value)重新渲染组件
标签: react-native state render