Я начал изучать React Native с Redux и создаю простой логин с помощью Google и Facebook, который я хочу отправить в бэкэнд Parse на AWS.
У меня есть следующий компонент кнопки Facebook:
import { Button } from 'react-native';
import { connect } from 'react-redux';
import React, { Component } from 'react';
import { LoginManager } from 'react-native-fbsdk';
import { createUser } from '../actions';
class FacebookButton extends Component {
facebookButtonPressed(){
this.props.createUser("dummyemail@gmail.com","12345");
}
render() {
return (
<Button
onPress={this.facebookButtonPressed.bind(this)}
title="Sign In with Facebook"
color="#000000"
/>
);
}
}
export default connect(null,{ createUser })(FacebookButton);
Я еще не интегрировал Facebook, я просто хочу посмотреть, смогу ли я создать пользователя для разбора. Это действие, которое я использую:
import Parse from 'parse/react-native';
export const createUser = (email, name) => {
return (dispatch) => {
var user = new Parse.User();
user.set("username", "my name");
user.set("password", "my pass");
user.set("name",name);
user.set("email", email);
// other fields can be set just like with Parse.Object
user.set("phone", "415-392-0202");
user.signUp(null, {
success: function(user) {
// Hooray! Let them use the app now.
console.log("User created");
},
error: function(user, error) {
// Show the error message somewhere and let the user try again.
alert("Error: " + error.code + " " + error.message);
}
});
}
};
Когда я запускаю отладчик в браузере, я вижу, что вызывается createUser
, а когда мы вызываем user.signUp
, я получаю следующую ошибку:
undefined is not an object (evaluating 'reactNative.AsyncStorage.getItem')
Когда я читаю документы Parse Javascript и пробую следующее:
//Get your favorite AsyncStorage handler with import (ES6) or require
import { AsyncStorage } from 'react-native';
//Before using the SDK...
Parse.setAsyncStorage(AsyncStorage);
Я звоню Parse.setAsyncStorage(AsyncStorage);
в коде ниже.
import ReduxThunk from 'redux-thunk';
import reducers from './src/reducers';
import Parse from 'parse/react-native';
import { Provider } from 'react-redux';
import Login from './src/screens/Login';
import React, { Component } from 'react';
import { AsyncStorage } from 'react-native';
import { createStore, applyMiddleware } from 'redux';
export default class App extends Component {
componentWillMount() {
Parse.initialize("MY KEY");
Parse.serverURL = 'MY URL';
Parse.setAsyncStorage(AsyncStorage);
}
render() {
const store = createStore(reducers, {}, applyMiddleware(ReduxThunk));
return (
<Provider store={store}>
<Login />
</Provider>
);
}
}
Я получаю ошибку reactNative2.default.setAsyncStorage is not a function
. Честно говоря, я пытался Parse.setAsyncStorage(AsyncStorage);
в надежде исправить проблему AsyncStorage, упомянутую выше.
Итак, есть идеи, почему я получаю забавное сообщение об ошибке AsyncStorage при попытке создать пользователя Parse?