【问题标题】:React Navigation Back Button Doesnt do anything反应导航返回按钮不做任何事情
【发布时间】:2020-01-28 09:05:52
【问题描述】:

基本上就是标题所说的。我正在尝试通过将当前页面 routeName 传递到导航状态来创建后退按钮,然后在详细信息页面上检索参数并将 routeName 传递给 goBack 按钮。但是当我单击按钮时,它什么也没做。我检查了上一页的routeName是否处于状态,但它仍然没有做任何事情。

列表屏幕 这是我的 Button,我将一个 reducer 的 id 和当前屏幕的 routeName 传递给导航参数

renderList = () => {
    const { lists } = this.props;
    if(lists) {
        return (lists.data.map(el => {
            return (
                <TouchableOpacity
                    key={el.id}
                    onPress={ () => this.props.navigation.navigate('PostItem', { nid: el.id, prevScreen: this.props.navigation.state.routeName})}>
                    <Text>Next Screen</Text>
                </TouchableOpacity>
            )}
        ))
    }
}

列表详情屏幕

class listDetail extends Component {

        constructor(props) {
            super(props);
        }

        componentDidMount() {
            this.props.loadPost('article', this.props.navigation.state.params.nid + '?include=field_image')
        }

        render() {
            const { goBack } = this.props.navigation;
            return (
                <View>
                    <Button title="Back" onPress={() => goBack(this.props.navigation.state.params.prevScreen)} />
                    { this.renderPost() }
                </View>
            )

        }
    }

有什么建议吗?

【问题讨论】:

    标签: react-native react-navigation


    【解决方案1】:

    goBack 中的参数指的是key 而不是routeName

    来自reactnavigation goBack docs

    注意——关键不是路线的名称,而是您在导航到路线时提供的唯一标识符。请参阅导航键。 因此,在您的示例中,我将尝试使用关键参数调用导航

    对于renderList onPress 可能是

    onPress={ () => this.props.navigation.navigate({ routeName: 'PostItem', key: `PostItem_${el.id}`, params: { nid: el.id } })}>
    

    然后在ListDetail

    <Button title="Back" onPress={() => goBack(`PostItem_${this.props.navigation.state.params.nid}`)} />
    

    【讨论】:

    • 您在使用react-navigation 吗?什么版本?
    • 4.0.发生的事情是参数变得未定义。我能够修复。但奇怪的是它会在标题中生成一个后退按钮,然后如果我单击它,它会返回到同一个屏幕的 listdetail 屏幕。几乎就像它卡在一个循环中一样。并修复我单击实际的后退按钮,我将我的 goBack 按钮分配给它没有做任何事情。所以标题后退按钮执行 List -> ListDetail 我单击它,然后它进入 ListDetail -> ListDetail 并且按钮消失
    猜你喜欢
    • 2017-12-31
    • 2017-11-14
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多