国际化支持:node
$ yarn add react-native-i18n # 第三方多语言库
$ yarn add react-native-device-info # 用户获取系统本地语言环境
$ react-native link react-native-device-info
I18n.getLanguages 获取用户首选的语言环境
I18n.locale : 设置本地语言环境。
I18n.defaultLocale 首选默认语言
I18n.fallbacks : 看文档说明我理解的意思是:若是获取到的系统语言相似en_US en-GB这样的,插件初始化的时候发现没有en_US.js en-GB.js,这个时候若是设置了I18n.fallbacks = true;系统就会按这样的(en_US en.js)顺序去查找文件,就会去找有一个en.js这样的文件, 官方建议使用I18n.fallbacks = true;
复制代码
let timeStamp = Math.floor(new Date().getTime() / 1000).toString(); // 时间戳整数部分,是用秒为单位的。
复制代码
react-native中的text组件,若是不设置宽度的话,默认是父组件的宽度,显示不下才会进行换行,开发中遇到遇到两种状况:一个image & text 采用横向布局,若是不设置text的宽度的话,超过父组件的宽度,右侧的文本会有丢失的状况;一个text & image 采用横向布局,若是不设置text的宽度的话,text会默认占用父组件的所有宽度,结果右侧的image被挤到了父组件以外.react
这两个都是为了JS模块化编程使用. 遵循规范 require 是 AMD规范引入方式 import是es6的一个语法标准,若是要兼容浏览器的话必须转化成es5的语法 调用时间 require是运行时调用,因此require理论上能够运用在代码的任何地方 import是编译时调用,因此必须放在文件开头 本质 require是赋值过程,其实require的结果就是对象、数字、字符串、函数等,再把require的结果赋值给某个变量 import是解构过程,可是目前全部的引擎都尚未实现import,咱们在node中使用babel支持ES6,也仅仅是将ES6转码为ES5再执行,import语法会被转码为require require / exports : 遵循 CommonJS/AMD,只能在运行时肯定模块的依赖关系及输入/输出的变量,没法进行静态优化。 用法只有如下三种简单的写法:es6
const fs = require('fs')
exports.fs = fs
module.exports = fs
import / export:
// 遵循 ES6 规范,支持编译时静态分析,便于JS引入宏和类型检验。动态绑定。
// 写法就比较多种多样:
import fs from 'fs'
import {default as fs} from 'fs'
import * as fs from 'fs'
import {readFile} from 'fs'
import {readFile as read} from 'fs'
import fs, {readFile} from 'fs'
export default fs
export const fs
export function readFile export {readFile, read}
export * from 'fs'
复制代码
经过require引入基础数据类型时,属于复制该变量。 经过require引入复杂数据类型时,数据浅拷贝该对象。 出现模块之间的循环引用时,会输出已经执行的模块,而未执行的模块不输出(比较复杂) CommonJS模块默认export的是一个对象,即便导出的是基础数据类型shell
module.exports.modifyFile = function(){...};
import { DeviceEventEmitter } from 'react-native' // 引入
DeviceEventEmitter.addListener('message',param => {
this.setState({spotShow:param.spotShow})
console.log(param)
});
// 新的方法写法,
class A {
hide = toast => {
if (toast instanceof RootSiblings) {
toast.destroy();
}
};
}
复制代码