首页 > 解决方案 > React native navigation.push 没有从参数更新 UI

问题描述

我正在使用反应导航 5,

导航是这样的

Home
-->List
   -->detailsA
   -->detailsB
   -->detailsC
   -->detailsD

如您所见,我得到了像上面这样的导航结构,

我从home一个组件到list另一个组件使用navigation.navigate

它工作正常。我也可以ListdetailsA使用navigation.navigate.

这是代码List to details

<TouchableOpacity
        key={info.id}
        onPress={() =>
        navigation.navigate('CaseDetails', {
        screen: 'CaseDetails',
            params: {
                random: Math.floor(Math.random()* 2000),
                title: info.title,
                summary: info.summary,
                image: info.image,
            },
        })
    }>

如您所见,我可以使用参数传递详细信息。

当我想从另一个页面开始时,问题就开始detailsdetails。如文档所述,我在navigation.pushReact NativedetailA转换时使用detailsB

同时也通过了detailsB。

代码是这样的

<TouchableOpacity
                key={item.id}
                onPress={() =>
                   //********** using push here
                    navigation.push('CaseDetails', {
                        screen: 'CaseDetails',
                        params: {
                            random: Math.floor(Math.random()* 2000),
                            title: item.title,
                            summary: item.summary,
                            image: item.image,
                            
                    })
                }>

正如您在代码中看到的那样。我正在将新title , summary and image 传递给详细信息组件,但 UI 没有更新。

有什么我在这里想念的吗

重要的一点是,如果我从listdetails A,假设随机生成的数字是555,如果我从detailsAdetailsB随机数仍然是555

标签: reactjsreact-nativereact-navigation

解决方案


您是否从 detailsA 导航到 detailsB 只是为了更改其参数?如果是,您可以使用以下功能:

navigation.setParams({//new params here});

推荐阅读