【发布时间】:2019-03-12 19:38:50
【问题描述】:
大家好,我正在使用 Back4app 作为后端,我将它放在这样的文件中。 我使用一个类来封装 Parse。
import Parse from 'parse';
Parse.serverURL = process.env.REACT_APP_URL;
Parse.initialize(
process.env.REACT_APP_appID,
process.env.REACT_APP_JSkey
);
class ParseApp {
constructor() {
this.app = Parse;
this.userClass = Parse.Object.extend('CustomUsers');
}
addUser = (name, email) => {
const userDB = new this.userClass();
userDB.set('UserName', name);
userDB.set('email', email);
userDB.save().then((res) => {
console.log(res);
}, (err) => {
console.log(err);
});
}
getUsers = () => {
let Users = []
const queryUsers = new Parse.Query(this.userClass);
queryUsers.find().then((results) => {
Users = results.map((user) => {
return {
id: user.id,
userName: user.attributes.UserName,
email: user.attributes.email
};
});
return Users;
}, (err) => {
console.log(err);
});
}
}
export default new ParseApp();
我是这样使用的:
import React, {useState, useEffect} from 'react';
import Note from './note';
import './notes.css'
import UserNameMailForm from './userNameMailForm';
import shortid from 'shortid';
import ParseApp from '../parse';
const NoteApp = (props) => {
const [users, setUsers] = useState([]);
useEffect(() => {
const Users = ParseApp.getUsers();
}, []);
const handleClick = () => {
console.log(users);
}
const addNewUser = (userName, email) => {
ParseApp.addUser(userName, email);
}
return (
<div className="container p-0">
<div
className="screen pt-1 pb-1"
style={{overflowY: 'scroll'}}
>
{/* {users.map((user) => {
return <Note key={shortid.generate()} userName={user.userName} email={user.email} />
})} */}
</div>
<UserNameMailForm addUser={addNewUser} />
<button type="button" onClick={handleClick}>Show</button>
</div>
);
}
export default NoteApp;
我在我创建的解析类方法上得到了正确的结果,但在反应组件上未定义,我做错了什么?我应该遵循什么方法。 如果你能给我一些关于我应该遵循哪种方法的建议。
【问题讨论】:
-
“未定义”是什么意思?你的 React 组件没有渲染任何东西?您在编译/运行时收到错误消息?请详细说明。
-
当我在我的解析方法上使用 console.log 时,我得到了正确的查询结果,但是当我尝试使用该方法在我的组件上获取结果时,我得到了未定义的结果。
-
不清楚你所说的正确结果是什么意思(或者你如何得到它们)。您如何使用 Parse 类获得结果以及如何使用 React 类?
-
好吧,我再试一次,对不起,我是初学者。在第一个文件中,我创建了一个类来封装 Parse 并定义一些方法,getUsers 创建一个查询并检索一个带有结果的数组,如果 console.log 该结果我得到正确的响应,但是当我导入我的类的一个实例时在反应组件上(在 useEffect 中)并尝试使用 getUser 那里我无法得到相同的结果,与异步有关的东西?