【问题标题】:TypeError: navigation.getParam is not a function. (In 'navigation.getParam('name')', 'navigation.getParam' is undefined)TypeError:navigation.getParam 不是函数。 (在 'navigation.getParam('name')' 中,'navigation.getParam' 未定义)
【发布时间】:2020-11-20 14:57:42
【问题描述】:

我正在嵌套屏幕并将道具传递给屏幕,例如标题标题和 json 渲染。 今天早些时候一切正常,但现在它给了我 getParams 的错误。

HomeStack.js,在标题中,我通过导航到此标题的屏幕中的 FlatList 渲染获得标题。

        <Screen
          name='errorHP'
          component={errorHP}
          options={{
            headerTitle: () => <Header navigation={navigation} title={navigation.getParam('name')} />,
            headerTitleAlign: 'center',}}
        /> 

HP.js,这里是flatlist渲染,并将渲染导出到页面errorHP

<FlatList data={filteredSearch} keyExtractor={(item) => item.key} renderItem={({item}) => (
                <TouchableOpacity onPress={() => navigation.navigate('errorHP', item)}>
                    <Card>
                        <Text style={globalStyles.titleText}> {item.name} </Text>
                    </Card>
                </TouchableOpacity>
            )} />

errorHP.js,这里列出了错误,点击后,将再次将参数传递到获取错误详细信息的新页面。

export default function errorHP ({navigation}) {
    const data = navigation.getParam('errors');
    const errors = Object.keys(data);
    return (
        <View style={globalStyles.container}>
            <FlatList data={errors} renderItem={({item}) => (
                <TouchableOpacity>
                    <Card>
                        <Text style={globalStyles.titleText}> {item} </Text>
                    </Card>
                </TouchableOpacity>
            )} />

我一直在搞乱,仍然无法解决这个问题。 感谢您的关注!

【问题讨论】:

  • 三个屏幕都在堆栈导航器中吗?
  • HomeStack 是堆栈导航器,HP 屏幕和 errorHP 在里面是相邻的
  • 能否提供您的整个堆栈导航器的代码?
  • snack.expo.io/@penhaman/graceful-waffleshomeStack.js、HP.js、errorHP.js 和drawer.js

标签: react-native react-navigation react-navigation-v5


【解决方案1】:

您需要从 route 属性中获取参数:

export default function errorHP ({navigation, route}) {
  const data = route.params.errors;

  // whatever
}

<Screen
  name="errorHP"
  component={errorHP}
  options={({ route, navigation }) => ({
    headerTitle: () => (
      <Header navigation={navigation} title={route.params.name} />
    ),
    headerTitleAlign: 'center',
  })}
/>

【讨论】:

  • 不起作用,可能是因为我的导航抽屉?请检查snack.expo.io/@penhaman/graceful-wafflesdrawer.js
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-18
  • 1970-01-01
  • 2021-03-12
  • 2013-03-22
  • 1970-01-01
  • 2016-03-07
  • 1970-01-01
相关资源
最近更新 更多