React Native

捕获未处理的Promise错误

折月煮酒 提交于 2019-11-29 12:32:42
译者按: 通过监听 unhandledrejection 事件,可以捕获未处理的Promise错误。 原文: Tracking unhandled rejected Promises 译者: Fundebug 为了保证可读性,本文采用意译而非直译,并且对源代码进行了大量修改。另外,本文版权归原作者所有,翻译仅用于学习。 使用 Promise 编写异步代码时,使用 reject 来处理错误。有时,开发者通常会忽略这一点,导致一些错误没有得到处理。例如: function main() { asyncFunc() .then(···) .then(() => console.log('Done!')); } 由于没有使用 catch 方法捕获错误,当 asyncFunc() 函数 reject 时,抛出的错误则没有被处理。 这篇博客将分别介绍在浏览器与Node.js中,如何捕获那些未处理的Promise错误。 浏览器中未处理的Promise错误 一些浏览器(例如Chrome)能够捕获未处理的Promise错误。 unhandledrejection 监听 unhandledrejection 事件,即可捕获到未处理的Promise错误: window.addEventListener('unhandledrejection', event => ···); 这个事件是

windows配置react-native 开发环境(开发android版本)

烈酒焚心 提交于 2019-11-29 09:31:19
新到的公司用的window系统,要开发react-native,没办法,只好一步步开始配置其开发环境。 安装node环境,https://nodejs.org/zh-cn/ 官网下载即可。 安装react-native-cli, npm install -g yarn react-native-cli 这里没有强制用yarn,也可以用cnpm,个人比较推荐yarn.安装完后,开始搭建java环境了. 安装java环境. 下载jdk,http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html 找到相对应的直接下载就可以,我选择的是: 指标指错了,应该指向64位的. 一路点击下一步即可.安装完后, 环境变量中进行相应的配置,如下: 我是装在这个文件下面的,在系统变量中新增一个变量即可,然后在环境变量中: 在后面加上这些个变量,%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin OK,JAVA环境变量配置完了,可以到命令行中输入java试试,如果有这类提示就说明安装好了. 接下来配置android环境: 安装android studio 官网下载:http://www.android-studio.org/; 一路下一步,到选择的时候,选择

用了这么久HTTP, 你是否了解Content-Length?

风流意气都作罢 提交于 2019-11-29 08:58:01
摘要: 理解HTTP协议... 原文: 用了这么久HTTP, 你是否了解Content-Length和Transfer-Encoding ? 作者: 朴瑞卿的博客 由Content-Length导致的问题引发的一系列思考: 前段时间开发API网关, 使用postman调试时出现了超时的情况, 经排查确定是请求数据被处理后 Content-Length 与实际不一致导致的问题, 故有此文. Content-Length , HTTP消息长度, 用 十进制数字 表示的 八位字节的数目 . 一般情况下, 很多工作都被框架完成, 我们很少去关注这部分内容, 但少数情况下发生了 Content-Length 与实际消息长度不一致, 程序可能会发生比较奇怪的异常, 如: 无响应直到超时. 请求被截断, 而且下一个请求解析出现错乱. Content-Length 是HTTP消息长度, 用 十进制数字 表示的 八位字节的数目 , 是Headers中常见的一个字段. Content-Length 应该是精确的, 否则就会导致异常 (特别地, HTTP1.0中这个字段可有可无). Content-Length 首部指示出报文中实体主体的字节大小. 这个大小是包含了所有内容编码的, 比如, 对文本文件进行了 gzip 压缩的话, Content-Length 首部指的就是压缩后的大小而不是原始大小.

ReactNative弹出Modal对话框

本小妞迷上赌 提交于 2019-11-29 07:51:51
const RootStackWithModal = createStackNavigator( { Main: { screen: RootNavigator, }, ParticipantModal: { screen: ParticipantModal, }, }, { mode: 'modal', headerMode: 'none', cardStyle: { backgroundColor: 'rgba(0, 0, 0, 0)', opacity: 1 }, transitionConfig: () => ({ containerStyle: { backgroundColor: 'rgba(0, 0, 0, 0)' } }) } ); export default AppContainer = createAppContainer(RootStackWithModal); import {Modal, Text, TouchableHighlight, View, Dimensions} from "react-native"; import React from "react"; export default class ParticipantModal extends React.Component { render() { return ( <Modal

学习react native资料

北战南征 提交于 2019-11-29 03:31:19
学习资源 JavaScript 简单、免费而且有趣: http://jsforcats.com/ 想要更多资源?这里有许多: https://medium.com/javascript-scene/learn-javascript-b631a4af11f2 任何编程语言都包含许多内容。如果你只是对学习 React Native 开发中常见的 ES6 功能感兴趣,我这里为你整理了一份大纲: https://medium.com/the-react-native-log/a-brief-overview-of-es6-for-react-native-developers-15e7c68315da React 对于使用 React Native 来说,理解 React 是必要的。从名字上就可以看得出来。React 官方文档对你应该很有帮助。 我是 Dan Abramov 的 React 教材的热粉。它会教你使用 React 所需要知道的一些事情: https://reactjs.org/tutorial/tutorial.html 如果你刚刚接触 JSX,这会帮到你: https://reactjs.org/docs/introducing-jsx.html 我也经常参考各种生命周期方法,因为我的大脑拒绝记住它们: https://reactjs.org/docs/react

createStackNavigator

早过忘川 提交于 2019-11-28 16:03:53
createStackNavigator createStackNavigator 提供APP屏幕之间切换的能力,它是以栈的形式还管理屏幕之间的切换,新切换到的屏幕会放在栈的顶部。 屏幕转场风格 默认情况下,createStackNavigator提供了转场过渡效果,在Android和iOS上过渡效果是不同的, 这也是React Native重平台性的一个体现 ,在Android上从屏幕底部淡入,在iOS上是从屏幕的右侧划入,当然你也可以通过配置让StackNavigator支持屏幕从底部滑入的效果。 createStackNavigator API createStackNavigator(RouteConfigs, StackNavigatorConfig): RouteConfigs (必选):路由配置对象是从路由名称到路由配置的映射,告诉导航器该路由呈现什么。 StackNavigatorConfig (可选):配置导航器的路由(如:默认首屏,navigationOptions,paths等)样式(如,转场模式mode、头部模式等)。 从createStackNavigator API上可以看出 createStackNavigator 支持通过 RouteConfigs 和 StackNavigatorConfig

React Native 混合开发(Android篇)

血红的双手。 提交于 2019-11-27 19:31:20
在React Native的应用场景中,有时候一个APP只有部分页面是由React Native实现的,比如:我们常用的携程App,它的首页下的很多模块都是由React Native实现的,这种开发模式被称为混合开发。 混合开发的一些其他应用场景: 在原有项目中加入RN页面,在RN项目中加入原生页面 原生页面中嵌入RN模块 RN页面中嵌入原生模块 以上这些都属于React Native混合开发的范畴,那么如何进行React Native混合开发呢? 在这篇文章中我将向大家介绍React Native混合开发的流程,需要掌握的技术,以及一些经验技巧, 与该文章配套的还有React Native与Android 混合开发讲解的视频教程 。 React Native混合开发的教程我们分为上下两篇,上篇主要介绍 如何在现有的Android应用上进行React Native混合开发 ,下篇主要介绍 如何在现有的iOS应用上进行React Native混合开发 。 将React Native集成到现有的Android应用中需要如下几个主要步骤: 首先,你需要有一个React Native项目; 为已存在的Android应用添加React Native所需要的依赖; 创建index.js并添加你的React Native代码; 创建一个Activity来承载React Native

android翻译应用、地图轨迹、视频广告、React Native知乎日报、网络请求框架等源码

▼魔方 西西 提交于 2019-11-27 09:04:07
Android精选源码 android实现高德地图轨迹效果源码 使用React Native(Android和iOS)实现的 知乎日报效果源码 一款整合百度翻译api跟有道翻译api的翻译君 RxEasyHttp一款基于RxJava2+Retrofit2实现简单易用的网络请求框架 RecyclerView侧滑菜单,Item拖拽,滑动删除Item,自动加载更... android:ListView、RecyclerView两种方式实现聊天界面 RecyclerView两侧菜单功能、侧滑删除、 拖拽、根据type显示菜单 基于Material Design的todo待办记事应用源码 自定义基础掌握的16种模式示例图 android在视频中加入广告预览效果源码 <br/> Android优质博客 Android App启动时Apk资源加载机制源码分析 在Andorid开发中我们要设置文字或图片显示,都直接通过Api一步调用就完成了,不仅是我们工程下res资源以及系统自带的framwork资源也可以,那这些资源打包成Apk之后是如何被系统加载从而显示出来的呢。这里我要从Apk安装之后启动流程开始讲起,在桌面应用click事件之后 会通过Binder机制通知A... 阅读原文 技术解读美团外卖Android Crash治理之路! Crash率是衡量一个App好坏的重要指标之一

WebView内存泄露的解决方案

人盡茶涼 提交于 2019-11-27 07:11:47
一、简介: 做Android开发的相信都对webview不会陌生,而且也对系统自带的webview本身存在的问题也是怨念很久了,一方面是本身对js的支持不是很好另外一方面就是经常被人诟病的内存泄露了,网上也有很多解析和方案但至少在我的项目中是没任何效果的,今天我就分享一下我最终是怎么解决这些问题的(其实是很蠢的一个办法)。 二、需求背景: 需要一个带有加载进度条的webview来正常的显示合作方和自己的web页面。 1、解决webview对一些js的支持: 2、解决webview内存泄露: 关于内存泄漏终于找到了终极解决办法!!!该办法适用于我们的需求,在退出WebView的界面之后,迅速回收内存。也就是说为加载WebView的界面开启新进程,在该页面退出之后关闭这个进程。 这一点说了之后,你懂了吧? 但是在这个其中,杀死自己进程的时候又遇到了问题,网上介绍的各种方法都不好使, killBackgroundProcesses(getPackageName());各种不好用,最后使用System.exit(0);直接退出虚拟机(Android为每一个进程创建一个虚拟机的)。这个肯定不用纠结了,一旦退出,内存里面释放。听说QQ也是这么做。 在WebView所在的activity中,杀死WebView所在的进程( 单独为WebView所在的activity开一个进程,注意

React Native布局详细指南

穿精又带淫゛_ 提交于 2019-11-26 17:05:58
本文出自 《React Native学习笔记》 系列文章。 一款好的APP离不了一个漂亮的布局,本文章将向大家分享React Native中的布局方式FlexBox。 在React Native中布局采用的是FleBox(弹性框)进行布局。 FlexBox提供了在不同尺寸设备上都能保持一致的布局方式。FlexBox是CSS3弹性框布局规范,目前还处于最终征求意见稿 (Last Call Working Draft)阶段,并不是所有的浏览器都支持Flexbox。但大家在做React Native开发时大可不必担心FlexBox的兼容性问题,因为既然React Native选择用FlexBox布局,那么React Native对FlexBox的支持自然会做的很好。 宽和高 在学习FlexBox之前首先要清楚一个概念“宽和高”。一个组件的高度和宽度决定了它在屏幕上的尺寸,也就是大小。 像素无关 在React Native中尺寸是没有单位的,它代表了设备独立像素。 <View style={ {width:100,height:100,margin:40,backgroundColor:'gray'}}> <Text style={ {fontSize:16,margin:20}}>尺寸</Text> </View> 上述代码,运行在Android上时,View的长和宽被解释成:100dp