一、ReactNavigation中如何实现页面跳转

因为每个屏幕组件(具有路由地址的组件)都是由App根组件自动创建并挂载的,App组件

在创建屏幕组件时,会自动传递进来一个props:   navigation

从当前屏幕跳转到其他屏幕:

this.props.navigation.navigate('屏幕地址')

注意:默认情况下,Image没有onPress事件,如果想要被点击实现跳转,

需要封装到"触摸反馈组件",如

<TouchableOpacity  onPress={  }>

<Image/>

</TouchableOpacity>

二、ReactNavigation中如何实现跳转传参

回忆:基于浏览器的Web应用中如何传参?

Angular中:

路由词典:{path:'product/detail/:pid',component:.... }

执行跳转:<a routerLink="product/details/">

注意:RN应用根本没有浏览器,没有地址栏,没有/15!

RN中的路由传参不需要修改路由词典:

     前一个组件跳转时提供路由参数:

this.props.navigation.navigate('目标地址',{pid:13,age:30})

后一个组件加载完成时读取路由参数:

this.props.navigation.state.params   ------------   { pid:13,age:30 }

或者

this.props.navigation.getParam( 'pid' , 99)              //99表示默认参数值

class  App extends  React.Component{

render(){

return (

<View>

<ScreenHeader>

{读取LoginScreen.navigationOptions来填充页头 }

</ScreenHeader>

<ContentOutlet>

{

if(当前客户端想访问login地址的话){

return  <LoginScreen  navigation={...}/>

}

}

</ContentOutlet>

</View>

)

}

}

三、ReactNavigation中如何配置页头

①仅指定标题栏文字

static   navigationOptions = {

         title: ' 标题栏文字 '

            }

②指定复杂的标题栏组件

static    navigationOptions ={

  headerTitle:<Any/>

                    headerLeft:<Any/>

                    headerRight:<Any/>

}

可以为headerTitle、headerLeft、headerRight属性赋值为任意组件/自定义组件,实现页头

自定义的功能;

此外,如果需要在页头中使用navigation对象,不能直接使用this.props.navigation(静态成员中

不能使用this),可以使用

static  navigationOptions =((obj)={

return {

   title:'商品编号:'  +obj.navigation.getParam('pid') +'的详情'

}

})

四、前端可用的异步请求技术有哪些?

①原生XHR:直接,但可能产生回调地狱

②jQuery.ajax():简单,但可能产生回调地狱

③Axios:功能强大,基于Promise

④HttpClient:功能强大,基于观察者模式

----------------------------------------------------

⑤Fetch:W3C的新标准,有望取代XHR

RN应用中没有浏览器,没有原生XHR技术;但是RN底层根据W3C Fetch标准,

提供了一套完整的Fetch API.

FetchAPI的使用方法:

     发起GET请求:  

fetch(url).then((res)=>{

return   res.json()   //等待下载完全响应消息主体,解析为JS对象

}).then((body)=>{

//body就是响应主体

}).catch((err)=>{

})

 发起POST请求:

       let  options ={

methods:'POST',

headers:{},

body:'k=v&k=v'

}

fetch(url).then((res)=>{

return   res.json()   //等待下载完全响应消息主体,解析为JS对象

}).then((body)=>{

//body就是响应主体

}).catch((err)=>{

})

2.小知识:如何在海量的代码快速定位错误  ------  调试技巧?

增量调试:注释掉最新添加的功能,如果没有错误了,说明最新添加的代码有问题;

如果仍旧有错,说明错误存在于之前的代码中;继续注释掉此新增加的功能....

功能1:

功能2:

//功能3:

//功能4:

3.如何在RN中实现类似于Web中顶部/底部固定效果?

要点:

①父容器<View>必须设定height,获取设定高度占比flex

②ScrollView天然就会占用所有可用空间,故可省略flex

③固定在底部的元素只需要声明在ScrollView下方

4.RN中如何获取当前手机屏幕的尺寸?

import  {Dimensions}   from   'react-native'

获取屏幕的宽:Dimensions.get('screen').width

获取屏幕的高:Dimensions.get('screen').height

获取窗口的宽:Dimensions.get('window').width

获取窗口的高:Dimensions.get('window').height

提示:手机中window的宽和screen的宽;screen的高等于window

的高+状态栏的高度.

最新文章

  1. Couldn&#39;t open CUDA library cublas64_80.dll etc. tensorflow-gpu on windows
  2. Apache多站点配置(ubuntu)
  3. HP_UX系统批量创建LV或raw设备的Shell 脚本
  4. java的 new 关键字
  5. Unity的旋转-四元数,欧拉角用法简介
  6. Android学习总结——强制下线功能(广播)
  7. Grid++Report 数据填充教程
  8. SASS组件开发
  9. 导航原理实验系统软件——node-webkit初探
  10. spring定时器的使用
  11. NLTK学习笔记(八):文法--词关系研究的工具
  12. 数据结构-栈(应用篇)之快速排序法-C和C++的实现
  13. 【BZOJ4407】于神之怒加强版(莫比乌斯反演)
  14. (三)图数据库neo4j的安装配置
  15. 学习ASP.NET Core Razor 编程系列十一——把新字段更新到数据库
  16. 你不可不知的Java引用类型之——虚引用
  17. 使用VBA进行JS加密的反混淆,还原JS代码。
  18. JavaScript立即执行函数学习
  19. 最大流算法-最高标号预流推进(HLPP)
  20. hdu 1728 迷宫 给定最大转弯次数 (BFS)

热门文章

  1. 【&lt;meta name=&quot;&quot; content=&quot;&gt;】的作用
  2. php json接口demo
  3. 2019-2020-1 20199329《Linux内核原理与分析》第七周作业
  4. 同步类的基础AbstractQueuedSynchronizer(AQS)
  5. Eclipse 全部快捷一览表(具TM全)
  6. 聊聊select, poll 和 epoll_wait
  7. 面试中的volatile关键字
  8. 《C程序设计语言》 练习1-22
  9. Python基础03 id
  10. Linux查看redis占用内存的方法