项目环境:
"react":"16.0.0-alpha.6",
"react-native":"0.44.0",
"react-native-animatable":"^1.2.4",
"react-native-baidu-map":"^0.6.0",
"react-native-easy-toast":"^1.0.8",
"react-native-gallery":"0.0.17",
"react-native-image-crop-picker":"^0.17.3",
"react-native-image-progress":"^1.0.1",
"react-native-image-zoom-viewer":"^2.0.10",
"react-native-progress":"^3.4.0",
"react-native-pull":"^2.0.2",
"react-native-scrollable-tab-view":"^0.8.0",
"react-native-swiper":"^1.5.13",
"react-native-vector-icons":"^4.4.2",
"react-navigation":"^1.0.0-beta.11"。
1、这个项目是一开始用的navigation,和其他的一些第三方库,做到一半的时候发现有个图片选择的功能,于是各种找,决定用react-native-image-crop-picker;当我安装库后,把xcode项目按照croppicker的官方教程走下来,发现xcode项目都打不开了,主要是这一步影响的(react-native link react-native-image-crop-picker)。
接着就是各种重来,各种配置,好几遍,都不能成功,最后用重建一个项目,然后只用crop-picker,发现可以使用。然后就在这个简单的项目的基础上继续往下搭环境把原来的项目整合进去,最后可以使用了。希望对用到的人有所帮助吧。
2、
关于项目中的输入响应子组件的componentWillReceiveProps,这里获得的输入的值永远是输入框改变之前的值。
处理:通过本地存储把输入框的值改变,然后在子组件中获得本地存储的值,再做相应的操作。如:
在主组件的输入框中:
onChangeText={(name) => {
Tool.setOne('searchText',{name:name})
this.setState({
searchText:name,
});}}
然后在子组件中:
componentWillReceiveProps() {
// console.warn(this.props.name)//这里的值永远是父组件的输入框的改变之前的值。
Tool.getOne('searchText').then(val=>{//自己封装的本地存储
// console.warn(val.name);//这里的值为实时响应的值。
this.state.reqData.name=val.name;
this.state.nomore=false;
this.state.reqData.page=0;
this.state.listData= [];
this.setState({
dataSource:this.state.dataSource.cloneWithRows([])
});
this.loadMore();
})}
3、关于百度地图集成后archive发布的问题。详细说明。
4、 Xcode编译常见错误解决:linker command failed with exit code 1 (use -v to see invocation) ,
5、关于解决Modal框的问题。npm install react-native-root-modal,替换RN的modal。详细说明。
6、Attempted to transition from state `RESPONDER_INACTIVE_PRESS_IN` to `RESPONDER_ACTIVE_LONG_PRESS_IN`, which is not supported.
这个是因为开启了debug模式,关闭即可。
7、关于微信插件react-native-wechat,如果RN版本小于0.46(好像是),就只能用1.9.2的版本,最新1.9.9的版本有一个第三方包只有0.46以上才有。
8、关于,Android中百度地图显示网格的问题。当环境配置好后(配置环境的时候跟着文档走就可以了,只是在mainApplication中的new BaiduMapPackage(getApplicationContext()),中的getApplicationContext(),需要自己加),出现网格,
如果空白可能的问题是ak填错,或者meta-data放错地方。
可以尝试一下这个:
android:name="com.baidu.lbsapi.API_KEY"
android:value="�xxxxxxxxxxxxxxxxxxx"/>
meta-data 放到application里面
9、用ListView的时候,会出现一个非常傻bi的情况,就是render的时候,listView不显示,需要碰/滑一下才会显示。
一开始我在怀疑自己是不是布局哪里有冲突,改到哭都没发现布局有什么问题,直到我谷歌了一下 “react native listView not show touch”...
最后,我按react native里的issue:
在初始化listView时设置属性
removeClippedSubviews={false}
10、项目最近更新到
"react":"16.0.0",
"react-native":"0.50.4",
不过这就出了些问题,
1、import React ,{PropTypes}from'react';这句话不能用了,react直接把Proptypes放到单独的库里面了。改为
const PropTypes = require('prop-types');这样的话很多第三方库都要改,最好的方式是直接将react的index改为:
'use strict';
import PropTypes from'prop-types';
letReact;
if(process.env.NODE_ENV ==='production') {
React = require('./cjs/react.production.min.js');
}else{
React = require('./cjs/react.development.js');
}
React.PropTypes = PropTypes;
module.exports = React;
、、、、、、、、、、、、、、、、、、、、、