react-native 个人笔记

npm :  是Node的一个资源管理工具,不要问‘为什么我没有这个东西’之类的问题。下载安装,然后配置环境变量就好了。

===========================================

MD5加密

下载、导包。

npm install node-forge //在项目目录下 (下载)

//ES5 导入写法

var forge = require('node-forge');

//ES6 导入写法

import forge from 'node-forge';

//let是es6的东西,es5写 var 两者的区别可以自己去查下

let md = forge. md. md5. create();
md. update( '需要加密的字符串');
password = md. digest(). toHex();

===========================================

删除依赖包

https://www.jianshu.com/p/0b94b3a7b95f


===========================================

组件Props属性检查

其实我觉得这个不是很重要,可以忽略的

在一些时候,组件对于传入的值得进行检验,我在官方和书上看到的是这样的。

static propTypes = {
titleString: React.PropTypes.string.isRequried,
........
};


这时候你会发现报错 undefined is no an object  ... default.ReactType.string ,怎么办呢?

在自己项目根目录运行  npm install prop-types  ,

import PropTypes from 'prop-types';
static propTypes = {
titleString: PropTypes.string.isRequried,//字符串
rigthBtnAction: PropTypes. func. undefined,//function
isVisible: PropTypes. bool. isRequired,//boolean值
         textAction : PropTypes . number . isRequired,//数字
........
};

然后再运行项目就行了。

======================================================

Fetch请求服务器拿不到body里的参数问题。

按照官方文档,fetch请求的时候,body是这样写的。

headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    firstParam: 'yourValue',
    secondParam: 'yourOtherValue',
  })

然而我昨天一天都在弄这个,服务器一直拿不到我传过去的值,都是null,虽然说现在服务器接口都差不多是接受Json格式的数据了,但是还有的是别的,我公司的服务器上就是Ajax,得是下面这种的

headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
  },
  body: 'key1=value1&key2=value2'

这里强调下headers这个鬼东西,这个和服务器那边定义的请求头有关系,如果不一致,那么那边是接收不到参数的,也就是我昨天遇到的问题,昨天弄了一上午也没弄明白,到了下午我就问服务端的人然后一个个试才试出来的,但是又有一个新的问题,body的主体 用‘key1=value1&key2=value2...’这种格式让我很反感,我不喜欢这种,我喜欢‘application/json’格式的,后面直接JSON.stringify({....})一下就行了,然后找资料我发现了这个 querystring ,可以在里面写json格式的数据,然后转换一下就行了。具体如下:

在项目根目录运行 : npm install querystring

项目导入    import querystring from 'querystring';

fetch请求的时候headers和body这样定义

headers: {
'Accept' : 'application/json',
'Content-Type' : 'application/x-www-form-urlencoded',
},
body: querystring.stringify({key1 : value1, key2 : values ...}) //重点在这里


就是这样的,再说一次,这个是基于服务器是接受Ajax格式的数据。具体问自己公司服务端是什么格式的。

=======================================================

RN项目禁止横竖屏切换

Android

找到RN项目的 AndroidManifest 文件

C:\workspase_test\ '项目名'  \android\app\src\main\AndroidManifest.xml

<activity
android:name= ".MainActivity"
android:screenOrientation="portrait"
..........
</activity>
在MainActivity的配置里添加一行   android:screenOrientation="portrait" 就行了

但这仅仅只是android部分,如果运行在IOS上还是能横竖屏切换的,IOS的还不知道,但是有两则帖子可以看一下

IOS

https://segmentfault.com/q/1010000011144372

https://www.cnblogs.com/maoyazhi/p/5411754.html


=======================================================

关于点击事件


        return (
< View style= {[ myStyles. centerContent, { flex: 1 }] } >
< TouchableOpacity onPress= {() => this. props. navigation. navigate( 'Result', { key: 'Request' }) } >
< Text style= { myStyles. buttomStyle } >我去拿数据了 </ Text >
</ TouchableOpacity >
< Text style= {{ marginTop: 10 } } > {undefined != mUser && '' != mUser ? JSON. stringify( mUser) : '' } </ Text >
</ View >
)
点击事件一定记着用 TouchableOpacity  包起来,要不然随机性的报错。

=======================================================


经验杂谈

**********************************************************

RN大部分都是JS代码,先对于Java的方法,JS这边的函数是没有返回值这个说法的,function a() {  return 'hello' ;} 像这种函数我要知道返回值该怎么办呢,  a().then(resultString); 调用a()函数,后面添加.then(resultString) 的声明来接收返回值,这个里面 .then(resultString => {  // 对返回值进行操作  })  通过=>  对返回对象进行做操或者(直接操作或者传递给下一个then或者传递给某一个函数)...

上面说的是我在本地数据操作时遇到的,存储一个值然后取出来时一直报错,不知道为啥,原来是没有用  then 去接收的问题

这个是React Native AsyncStorage本地存储工具类

http://www.php.cn/js-tutorial-383996.html

*******************************************************


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值