1、在一个页面中中引入一个组件,但是这个组件是一个小组件,例如是一个cell,单独的每个cell都是需要点击有链接跳转的,这个时候通常直接使用 onPress 的跳转就会不起作用

正确的处理方法是,在组件中封装一个点击事件,然后在父组件中执行跳转的函数

正常的跳转方法是:

import React from 'react';
import {
StyleSheet,
Text,
View,
Image,
TouchableOpacity,
ScrollView,
} from 'react-native'; // navigator
import { StackNavigator } from 'react-navigation'; // 引入组件 Cell
import CommonCell from './commonCell'; export default class More extends React.Component { // 顶部导航
static navigationOptions = ({ navigation }) => {
const { navigate } = navigation;
return {
title: '更多',
tabBarLabel: '更多',
mode: 'card',
headerMode: 'float',
activeTintColor: '#000000',
};
}; render() {
const { navigate } = this.props.navigation;
return (
<View style={styles.container}>
<ScrollView> <View style={{marginTop: }}>
<TouchableOpacity
onPress={() => navigate('ShakeMode')} // 跳转
>
<Text>点击震动手机</Text>
</TouchableOpacity>
</View> </ScrollView>
</View>
);
} } const styles = StyleSheet.create({
container: {
flex: ,
backgroundColor: '#e8e8e8',
},
});

如果引入了组件,在组件中要跳转,方法如下

父组件:

import React from 'react';
import {
StyleSheet,
Text,
View,
Image,
TouchableOpacity,
ScrollView,
} from 'react-native'; // navigator
import { StackNavigator } from 'react-navigation'; // 引入组件 Cell
import CommonCell from './commonCell'; export default class More extends React.Component { // 顶部导航
static navigationOptions = ({ navigation }) => {
const { navigate } = navigation;
return {
title: '更多',
};
}; render() {
const { navigate } = this.props.navigation;
return (
<View style={styles.container}>
<ScrollView>
<View style={{marginTop: }} >
<CommonCell
nextClick={() => {this.endClick()}}
title="点击震动手机"
/>
</View> </ScrollView>
</View>
);
} // 控制跳转
endClick() {
const { navigate } = this.props.navigation;
navigate('ShakeMode')
} } const styles = StyleSheet.create({
container: {
flex: ,
backgroundColor: '#e8e8e8',
},
});

引入组件

CommonCell,并将方法 nextClick = endClick,
endClick执行跳转的方法,
nextClick 传递给子组件
子组件
render() {
return (
<TouchableOpacity
onPress={this.props.nextClick}
>
<View style={styles.container}> {/**左边**/}
<Text style={{marginLeft: 10}}>{this.props.title}</Text> {/**右边 返回什么需要判断 **/}
{this.renderRightView()} </View>
</TouchableOpacity>
);
}

  这样就可以实现跳转了

基于 react-navigation 父子组件的跳转链接的更多相关文章

  1. 使用react进行父子组件传值

    在单页面里面,父子组件传值是比较常见的,之前一直用vue开发,今天研究了一下react的父子组件传值,和vue差不多的思路,父组件向子组件传值,父通过初始state,子组件通过this.props进行 ...

  2. React中父子组件间的通信问题

    1.https://blog.csdn.net/sinat_17775997/article/details/59103173 (React中父子组件间的通信问题)

  3. React中父子组件数据传递

    Vue.js中父子组件数据传递:Props Down ,  Events Up Angular中父子组件数据传递:Props Down,  Events  Up React中父子组件数据传递:Prop ...

  4. 如何基于 React 封装一个组件

    如何基于 React 封装一个组件 前言 很多小伙伴在第一次尝试封装组件时会和我一样碰到许多问题,比如人家的组件会有 color 属性,我们在使用组件时传入组件文档中说明的属性值如 primary , ...

  5. React之父子组件之间传值

    1.新增知识点 /** React中的组件: 解决html 标签构建应用的不足. 使用组件的好处:把公共的功能单独抽离成一个文件作为一个组件,哪里里使用哪里引入. 父子组件:组件的相互调用中,我们把调 ...

  6. 关于React的父子组件通信等等

    //==================================================此处为父子组件通信 1.子组件调用父组件: 父组件将子组件需要调用方法存入props属性内,子组 ...

  7. React中父子组件传值

    一.首先我们先来看父组件向子组件传值 1.1 我们要明白父组件 --> 子组件 是通过props这个属性来传值的 我们来看父组件的代码 import React from 'react'; im ...

  8. 基于react hooks,zarm组件库配置开发h5表单页面

    最近使用React Hooks结合zarm组件库,基于js对象配置方式开发了大量的h5表单页面.大家都知道h5表单功能无非就是表单数据的收集,验证,提交,回显编辑,通常排列方式也是自上向下一行一列的方 ...

  9. React之父子组件传递和其它一些要点

    react是R系技术栈中最基础同时也是最核心的一环,2年不到获取了62.5k star(截止到目前),足可见其给力程度.下面对一些react日常开发中的注意事项进行罗列. React的组件生命周期 r ...

随机推荐

  1. 1066N !最右边非零数

    http://hi.baidu.com/nicker2010/item/4fa83c4c5050b3e5a4c066ec 另一个 Last non-zero Digit in N! Time Limi ...

  2. 洛谷——P2676 超级书架

    https://www.luogu.org/problem/show?pid=2676#sub 题目描述 Farmer John最近为奶牛们的图书馆添置了一个巨大的书架,尽管它是如此的大,但它还是几乎 ...

  3. Linux环境变量设置中配置文件分析(/etc/profile,~/.bashrc等)(转)

    说明:在研究中发现,对于不同版本的Linux系统有着不同的文件,但是总的入口是不变的/etc/profile,下面只是展示加载顺序的研究过程,所以会有些系统没有这个文件等问题. 一.配置文件与作用域: ...

  4. OpenCV摄像头读取

    在Mac下面使用默认的OpenCV读取摄像头程序会报错 int main(int, char**) { VideoCapture cap(0); // open the default camera ...

  5. web项目log日志查看分析->流程理解

    1.DEBUG [2017-07-10 11:38:41,705][] org.springframework.web.servlet.DispatcherServlet:865 - Dispatch ...

  6. Clojure:通过ZeroMQ推送消息

    通过ZeroMQ的pub/sub模式,我们可以实现发送推送消息的功能.以下为示例代码(入门可参考此文:http://www.cnblogs.com/ilovewindy/p/3984269.html) ...

  7. SIS

    故障: 1.2017-12-14  发现前期测试的钉钉切换校区功能有遗留问题,第二个校区进行考勤后,在考勤记录中编辑考勤记录,出现无权限 原因:编辑考勤记录,传的schoolid不是原先的school ...

  8. EF + WCF学习笔记——EF实体类序列化

    项目中如果 EF + WCF 结合使用,模式应该是EF负责读取数据库,传递数据对象给WCF,WCF再将这些对象传送给客户端.因为WCF传送的对象需要序列化,而EF默认生成的对象并没有序列化,很可能会出 ...

  9. CodeForces - 743D Chloe and pleasant prizes

    Chloe and pleasant prizes time limit per test 2 seconds memory limit per test 256 megabytes input st ...

  10. B1232 [Usaco2008Nov]安慰奶牛cheer 最小生成树

    %%%小詹太巨啦!!!我就想直接最小生成树之后建树跑dfs,然后写跪了...然后看小詹博客之后恍然大悟,原来直接把边权改为w * 2 + 两边点权值就行了. 但是还是不对,为什么呢?原来我们起点走了三 ...