仅当用户完全移动到新区域时才显示重做搜索按钮

Only show redo search button when user has completely moved to a new area

如何才能仅在用户更改区域时才显示重做按钮?在我的代码中,它会随着区域的更改而不断闪烁,不确定缺少什么。

代码:

app.js

onregionchange() {
    this.setState({redosearch: !this.state.redosearch })
}

render() {
    const Showredo = ({redosearch }) => redosearch ? <View><Text> redo now <Text></View> : null
    return(
    <View>
    {this.state.redosearch  ? <ShowRedo  redosearch={this.state.redosearch }/> : null}
    <View>
        <MapView
            ref={(map) => (this.map = map)}
            style={styles.map}
            onRegionChange={this.onregionchange}
        >
        </MapView>
    )
}

我注意到有几件事可能会导致这里出现问题。首先,看起来您可能正在仔细检查状态值;在 Showredo 元素 属性 内,然后在 return 值内。其次,该代码有两个打开的 View 标签和两个没有关闭的 Text 标签。第三,看不到onregionchange函数是否绑定。最后,您 return 在渲染函数中添加了两个元素(或者实际上最后缺少两个视图关闭标记)

尝试将您的代码更改为这样应该更正所有这些:

onregionchange = () => {
    this.setState({redosearch: !this.state.redosearch })
}

render() {
    const { redosearch } = this.state;
    return([
    <View key="a_key_for_element_1">
        {redosearch ? <View><Text> redo now </Text></View> : null}
    </View>,
    <MapView 
        key="a_key_for_element_2"
        ref={(map) => (this.map = map)}
        style={styles.map}
        onRegionChange={this.onregionchange}
    >
    </MapView>]
    );
}