【问题标题】:How to pass JSON from materialTopTabNavigator to other screen component react native?如何将 JSON 从 materialTopTabNavigator 传递到其他屏幕组件反应原生?
【发布时间】:2020-10-25 21:58:22
【问题描述】:

我有一个 JSON,它从一个组件传递到另一个组件,并且有不同的组件屏幕选项卡,我如何将该 JSON 从主 MyTabs 组件传递到其他组件屏幕。这里 id 变量由 JSON 数据组成,我如何将其传递给 Home 和设置组件。

const tab = createMaterialTopTabNavigator();
const Mytabs = (props) =>{
const id = props.route.params;
return(

 <tab.Navigator   initialRouteName="home" >
  <tab.Screen  name="home" component={HomeScreen}   />
  <tab.Screen name="Settings" component={SettingsScreen}  />
 </tab.Navigator>
  
 );
 }

【问题讨论】:

    标签: reactjs react-native react-redux react-navigation


    【解决方案1】:

    React 导航屏幕有一个 initialParams 属性,您可以使用它来传递 id

    来自文档:

    您还可以将一些初始参数传递给屏幕。如果您在导航到此屏幕时未指定任何参数,则将使用初始参数。它们也与您传递的任何参数浅合并。可以使用 initialParams 属性指定初始参数。

    ...
    <tab.Screen
      name="home"
      component={HomeScreen}
      initialParams={{ id: id }}
    />
    <tab.Screen
      name="Settings"
      component={SettingsScreen}
      initialParams={{ id: id }}
    />
    ...
    

    要检索组件中的初始参数,请执行以下操作:

    function HomeScreen({route}) {
       const {id} = route.params
       ... // Do something with the id
    }
    

    阅读https://reactnavigation.org/docs/params/,了解可以将参数传递给路由的所有方式。

    【讨论】:

    • 使用 initialParams 时出现错误:导航器只能包含“屏幕”组件作为其直接子项(找到“[object,Object]”)。
    • 可以编辑您的问题并添加代码现在的样子吗?这听起来像是语法错误。
    • 是的,有一个语法错误,但是现在当我使用 initialParams 通过时,我得到一个数字 964,当我控制台登录我收到的组件时,我的 json 中没有这个数字,当我控制台时记录“id.class”我未定义,类是 json 对象。
    • 这不是initialParams 的问题,但意味着您没有正确地将数据作为道具传递给Mytabs
    • 非常感谢它的工作,我直接使用从 initialParams 传递的 id,你能建议我们在不使用 initialParams 的情况下传递这些数据的任何其他方式吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    相关资源
    最近更新 更多