React native React Native-如何在运行时调整视图大小并重新呈现页面

React native React Native-如何在运行时调整视图大小并重新呈现页面,react-native,rendering,React Native,Rendering,我正在开发一个具有多个视图的Audip播放器应用程序。像这样 <View style={{flex: 0.04}}> <Text style={styles.title}>{this.state.pageTitle}</Text> </View> <View style={{flex: 0.90}}> <FlatList .....List of clickable Audios to sent to pl

我正在开发一个具有多个视图的Audip播放器应用程序。像这样

<View style={{flex: 0.04}}>
    <Text style={styles.title}>{this.state.pageTitle}</Text>
</View>
<View style={{flex: 0.90}}>
    <FlatList
    .....List of clickable Audios to sent to player.....
    />
</View>
<View style={{flex: this.state.playerSize}}>
    <TouchableOpacity style={styles.audioplayerbutton} onPress={() => this.resizeAudioPlayer()}>
        <Text style={styles.accentTextSmall}>ReSize</Text>
    </TouchableOpacity>    
</View>
this.state.playerSize具有构造函数中定义的默认值0.06


resizePlayer确实成功调用。但是,视图不会自动刷新和调整大小。如果我转到另一个页面并返回,我确实会看到大小调整后的视图,但在保持在同一页面时不会看到。你知道如何实现调整底部视图大小的目标吗?(其他当然会按比例缩小)。

您应该使用
setState
更新状态,否则不会触发重新渲染。只需更改
resizeAudioPlayer
实现即可使用此功能

resizeAudioPlayer() {
  this.setState({
    playerSize: (this.state.playerSize === 0.06) ? 1.5 : 0.06,
  });
}
resizeAudioPlayer() {
  this.setState(prevState => ({
    playerSize: (prevState.playerSize === 0.06) ? 1.5 : 0.06,
  }));
}
更新-如果要将状态设置为取决于先前状态的值(如本场景中),最好使用更新程序函数

resizeAudioPlayer() {
  this.setState({
    playerSize: (this.state.playerSize === 0.06) ? 1.5 : 0.06,
  });
}
resizeAudioPlayer() {
  this.setState(prevState => ({
    playerSize: (prevState.playerSize === 0.06) ? 1.5 : 0.06,
  }));
}

您应该使用
setState
更新状态,否则不会触发重新渲染。只需更改
resizeAudioPlayer
实现即可使用此功能

resizeAudioPlayer() {
  this.setState({
    playerSize: (this.state.playerSize === 0.06) ? 1.5 : 0.06,
  });
}
resizeAudioPlayer() {
  this.setState(prevState => ({
    playerSize: (prevState.playerSize === 0.06) ? 1.5 : 0.06,
  }));
}
更新-如果要将状态设置为取决于先前状态的值(如本场景中),最好使用更新程序函数

resizeAudioPlayer() {
  this.setState({
    playerSize: (this.state.playerSize === 0.06) ? 1.5 : 0.06,
  });
}
resizeAudioPlayer() {
  this.setState(prevState => ({
    playerSize: (prevState.playerSize === 0.06) ? 1.5 : 0.06,
  }));
}