首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在常量中使用react导航?

如何在常量中使用react导航?
EN

Stack Overflow用户
提问于 2019-02-08 23:13:30
回答 3查看 830关注 0票数 2

我使用const来显示组件。现在,当我对const中的按钮使用react导航时,我看到这个错误:未定义的不是一个对象(计算'_this.props.navigation.navigate')

我尝试将navigation={this.props.navigation}添加到按钮以允许禁烟,但不起作用。

代码语言:javascript
复制
const WomenTab = () => (
    <View>
      <Button onPress={() => {
                        this.props.navigation.dispatch(StackActions.reset({
                          index: 0,
                          actions: [
                            NavigationActions.navigate({ routeName: 'Wallet' })
                          ],
                        }))
                      }}>
          <Text>Click</Text>
      </Button>
    <View>
);

库链接:http://github.com/react-native-community/react-native-tab-view

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-02-08 23:18:29

这被称为functional component,通常被称为无状态功能组件。

其中一个主要区别是,SFC不会自动接收prop,而是必须作为参数传递。因此,您应该使用以下模式,而不是this.props

代码语言:javascript
复制
const WomenTab = (props) => ( // <-- add props as an argument
  <View>
    <Button onPress={() => {
      props.navigation.dispatch(StackActions.reset({
        index: 0,
        actions: [ NavigationActions.navigate({ routeName: 'Wallet' }) ],
      }))
    }}>
      <Text>Click</Text>
    </Button>
  <View>
);

因为导航属性会自动传递给导航器的子节点,所以你不需要做任何其他的事情。如果你想通过其他道具,你可以照常做:

代码语言:javascript
复制
<WomenTab myProp={value} />

另一个常见的模式是destructure传递给SFC的属性,如下所示:

代码语言:javascript
复制
const WomenTab = ( {navigation} ) => ( // <-- you can pick the props you want via destructuring
  <View>
    <Button onPress={() => {
      navigation.dispatch(StackActions.reset({
        index: 0,
        actions: [ NavigationActions.navigate({ routeName: 'Wallet' }) ],
      }))
    }}>
      <Text>Click</Text>
    </Button>
  <View>
);

希望这能有所帮助,祝你好运!

票数 5
EN

Stack Overflow用户

发布于 2019-02-08 23:18:29

您需要将您的props传递给const,如下所示

代码语言:javascript
复制
const WomenTab = (props) => (
    <View>
      <Button onPress={() => {
                        props.navigation.dispatch(StackActions.reset({
                          index: 0,
                          actions: [
                            NavigationActions.navigate({ routeName: 'Wallet' })
                          ],
                        }))
                      }}>
          <Text>Click</Text>
      </Button>
    <View>
);

然后当你使用你的const时,你需要传递你想要的道具。

代码语言:javascript
复制
<WomenTab navigation={this.props.navigation} />
票数 1
EN

Stack Overflow用户

发布于 2019-02-08 23:19:49

基本上,您的道具不会从父组件传递到子组件。确保您已经在createStackNavigator函数中定义了WomenTab组件。还要在你的函数组件中传递道具。

代码语言:javascript
复制
const WomenTab = (props) => (
<View>
  <Button onPress={() => {
                    this.props.navigation.dispatch(StackActions.reset({
                      index: 0,
                      actions: [
                        NavigationActions.navigate({ routeName: 'Wallet' })
                      ],
                    }))
                  }}>
      <Text>Click</Text>
  </Button>
<View>

);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54595331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档