无法读取未定义的 React Native 和 Parse 的 属性 'getItem'
Cannot read property 'getItem' of undefined React Native and Parse
我已经开始使用 Redux 学习 React Native,我正在使用 Google 和 Facebook 登录构建一个简单的登录,我想将其发送到 AWS 上的 Parse 后端。
我有以下 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 问题。
关于为什么我在尝试创建 Parse 用户时收到有趣的 AsyncStorage 错误消息有什么想法吗?
我在这里留下答案,以防其他人遇到任何其他问题。问题是我使用的 Parse
版本。我使用的是 Parse 版本 1.6.14
。修复步骤:
- 打开
package.json
文件并将您的 Parse 版本更新为高于 1.11
的任何版本,对我来说 1.11.1
成功了。
- 在终端中:
npm install
这应该可以解决上述问题,请记住您必须实施:
//Get your favorite AsyncStorage handler with import (ES6) or require
import { AsyncStorage } from 'react-native';
//Before using the SDK...
Parse.setAsyncStorage(AsyncStorage);
根据文档。
我已经开始使用 Redux 学习 React Native,我正在使用 Google 和 Facebook 登录构建一个简单的登录,我想将其发送到 AWS 上的 Parse 后端。
我有以下 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 问题。
关于为什么我在尝试创建 Parse 用户时收到有趣的 AsyncStorage 错误消息有什么想法吗?
我在这里留下答案,以防其他人遇到任何其他问题。问题是我使用的 Parse
版本。我使用的是 Parse 版本 1.6.14
。修复步骤:
- 打开
package.json
文件并将您的 Parse 版本更新为高于1.11
的任何版本,对我来说1.11.1
成功了。 - 在终端中:
npm install
这应该可以解决上述问题,请记住您必须实施:
//Get your favorite AsyncStorage handler with import (ES6) or require
import { AsyncStorage } from 'react-native';
//Before using the SDK...
Parse.setAsyncStorage(AsyncStorage);
根据文档。