先看下成功后的效果图吧:
问题1:
在引入这个组件的时候,运行在真机上 运行不了,报这个错误
网上找了答案 是要添加动态 报 ,然后试了试加了下
并没有什么用。。。。。然后试了下把required 改成optional 在真机上可以跑了,optional :按需加载的意思吧
到最后用到这个组件的时候,上传和选择照片的时候,问题又来了,最后看了下 这个组件的git上的介绍 https://github.com/ivpusic/react-native-image-crop-picker 然后结合相关资料看了下,又重新配置了下
1.把node_modules / react-native-image-crop-picker /下的ImageCropPickerSDK 拖到Xcode工程的根目录下。
这里把包导入后 感觉万事 OK 了 可再用的时候,xcode又报了这个错误:
这个错误的大概意思就是:视图不在 windows 上 ,第一次可以,然后再次点击上传的时候却不行。。。。
坑爹,这怎么下手找问题呢?
记得 ,以前我们的老大,同事说过,碰到莫名其妙问题,加个延时:(一开始延迟写的是300不行,后来写了1s可以了,哎,好坑爹折腾了好久)
//拍照
openCamera() {
setTimeout(() => {
ImagePicker.openCamera({
width: 476,
height: 476,
cropping: true,
// multiple:true
}).then(image => {
let path = image.path;
const source = { uri: path };
this.setState({
file: this.state.file.concat([source]),
},
);
}, err => {
console.log('err= ' + err);
}).catch(err => {
console.log('image catch err= ' + err);
});
}, 1000)
}
openPicker() {
setTimeout(() => {
ImagePicker.openPicker({
width: 476,
height: 476,
cropping: true, //是否裁剪
// multiple:true
}).then(image => {
let path = image.path;
const source = { uri: path };
this.setState({
file: this.state.file.concat([source]),
});
// this.uploadAvatar(path);
}, err => {
console.log('err= ' + err);
}).catch(err => {
console.log('image catch err= ' + err);
});
}, 1000)
}
后来分析了下 ,可能是我用的RN的modal 异步state关闭时候问题,只是猜测~
根据这个思路,去验证了下 在setState 里加了个回调,还是不行,报同样的错误。
先记录到这吧~ 抓紧赶项目了!