NULL не является объектом (оценка 'ShareDialog.canShow') - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть такой код:

import React, { Component } from 'react';
import {AppRegistry, StyleSheet, Text, TouchableHighlight, View,} from 'react-native';
import {LoginButton, ShareDialog} from 'react-native-fbsdk';

class RNSample extends Component {
constructor(props) {
super(props);
const shareLinkContent = {
  contentType: 'link',
  contentUrl: 'https://www.facebook.com/',
  contentDescription: 'Facebook sharing is easy!'
};

this.state = {shareLinkContent: shareLinkContent,};
}

shareLinkWithShareDialog() {
var tmp = this;
ShareDialog.canShow(this.state.shareLinkContent).then(
  function(canShow) {
    if (canShow) {
      return ShareDialog.show(tmp.state.shareLinkContent);
    }
  }
).then(
  function(result) {
    if (result.isCancelled) {
      alert('Share cancelled');
    } else {
      alert('Share success with postId: ' + result.postId);
    }
  },
  function(error) {
    alert('Share fail with error: ' + error);
  }
);
}

   render() {
return (
  <View style={styles.container}>
    <LoginButton
      onLoginFinished={
        (error, result) => {
          if (error) {
            alert("Login failed with error: " + error.message);
          } else if (result.isCancelled) {
            alert("Login was cancelled");
          } else {
            alert("Login was successful with permissions: " + result.grantedPermissions)
          }
        }
      }
      onLogoutFinished={() => alert("User logged out")}/>
    <TouchableHighlight onPress={this.shareLinkWithShareDialog.bind(this)}>
      <Text style={styles.shareText}>Share link with ShareDialog</Text>
    </TouchableHighlight>
  </View>
    );
 }
 }

const styles = StyleSheet.create({
  container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
 },
 shareText: {
fontSize: 20,
margin: 10,
},
});

AppRegistry.registerComponent('RNSample', () => RNSample);

Но я получаю такую ​​ошибку: 'null is not an object (evaluating 'ShareDialog.canShow')

вот скриншот

Я использую реагировать родной.Я не понимаю, почему я получаю эту ошибку.React Native и React последней версии, которую я использую.Я установил настройки Facebook SDK для своего приложения.

Я тестировал несколько раз, но все равно получаю ошибку.И, кстати, почему stackoverflow говорит: «Похоже, ваш пост в основном кодовый; пожалуйста, добавьте еще немного деталей».Это очень раздражает!

1 Ответ

0 голосов
/ 14 февраля 2019

Вы передали это локальной переменной в функцию shareLinkWithShareDialog, но можете canShow передать состояние, используя this.state.shareLinkContent, что неверно.Это должно быть tmp.state.shareLinkContent

Так что измените

    ShareDialog.canShow(this.state.shareLinkContent)

На

    ShareDialog.canShow(tmp.state.shareLinkContent)

Устранит вашу проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...