我使用shareSingle()从https://github.com/EstebanFuentealba/react-native-share让我的应用程序在Facebook分享功能。
我按照文档编写了下面的代码,但它抛出:
可能存在未处理的Promise拒绝错误。类型错误:未定义不是对象
[exp] undefined 不是一个对象(评估'_reactNative.NativeModules.RNShare.shareSingle')
import React, {Component} from 'react';
import {StyleSheet, View} from 'react-native';
import Share, {ShareSheet, Button} from 'react-native-share';
export default class PreviewImage extends Component {
constructor(props) {
super(props);
this.state = {
visible: false
}
}
onCancel = () => {
this.setState({visible:false});
}
onOpen = () => {
this.setState({visible:true});
}
render() {
let shareOptions = {
title: "React Native",
message: "Hola mundo",
url: "http://facebook.github.io/react-native/"
};
return (
<View style={styles.container}>
<View style={styles.shareImageButton}>
<Button
buttonStyle={{
backgroundColor: "rgba(92, 99,216, 1)",
borderColor: "transparent",
borderWidth: 0,
borderRadius: 5
}}
onPress={() => this.onOpen()}
textStyle={{textAlign: 'center'}}
title={'Share'}/>
</View>
<ShareSheet
visible={this.state.visible}
onCancel={this.onCancel}
>
<Button iconSrc={{ uri: FACEBOOK_ICON }}
onPress={
() => {
this.onCancel();
setTimeout(() => {
Share.shareSingle(Object.assign({}, shareOptions, {"social": "facebook"})).catch(err => console.log(err));
}, 300);
}
}
>
Facebook
</Button>
</ShareSheet>
</View>
)
}
}
// facebook icon
const FACEBOOK_ICON = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAMAAAANIilAAAAAYFBMVEUAAAAAQIAAWpwAX5kAX5gAX5gAX5gAXJwAXpgAWZ8AX5gAXaIAX5gAXpkAVaoAX5gAXJsAX5gAX5gAYJkAYJkAXpoAX5gAX5gAX5kAXpcAX5kAX5gAX5gAX5YAXpoAYJijtTrqAAAAIHRSTlMABFis4vv/JL0o4QvSegbnQPx8UHWwj4OUgo7Px061qCrcMv8AAAB0SURBVEjH7dK3DoAwDEVRqum9BwL//5dIscQEEjFiCPhubziTbVkc98dsx/V8UGnbIIQjXRvFQMZJCnScAR3nxQNcIqrqRqWHW8Qd6cY94oGER8STMVioZsQLLnEXw1mMr5OqFdGGS378wxgzZvwO5jiz2wFnjxABOufdfQAAAABJRU5ErkJggg==";
const styles = StyleSheet.create({
container: {
flex: 1,
},
shareImageButton: {
flex: 1,
justifyContent: 'center',
}
});
感谢这里的潜在客户。
请注意 Share.open() 对我来说非常好。
我的 package.json
{
"name": "TrashCan",
"version": "0.1.0",
"private": true,
"devDependencies": {
"react-native-scripts": "1.11.1",
"jest-expo": "25.0.0",
"react-test-renderer": "16.2.0"
},
"main": "./node_modules/react-native-scripts/build/bin/crna-entry.js",
"scripts": {
"start": "react-native-scripts start",
"eject": "react-native-scripts eject",
"android": "react-native-scripts android",
"ios": "react-native-scripts ios",
"test": "node node_modules/jest/bin/jest.js"
},
"jest": {
"preset": "jest-expo"
},
"dependencies": {
"axios": "^0.18.0",
"expo": "^25.0.0",
"react": "16.2.0",
"react-native": "0.52.0",
"react-native-elements": "^0.19.0",
"react-native-share": "^1.0.26",
"react-navigation": "^1.1.2",
"react-redux": "^5.0.7",
"redux": "^3.7.2",
"redux-thunk": "^2.2.0",
"react-native-animate-number": "^0.1.2"
}
}