【发布时间】:2019-02-23 22:21:18
【问题描述】:
我是 React Native 的新手。在我的应用程序中,用于检查用户是否存在于数据库中的相同功能用于 3 个不同的文件。
checkUserExists = (userId) => {
var that = this;
database.ref('users').child(userId).once('value').then(function(result){
const exists = (result.val() !== null);
if (exists) {
var data = result.val();
that.setState({
username: data.username,
name: data.name
})
}
})
}
为了减少代码量,我想把这个函数放到一个组件中,以便它可以被重用。所以我用这个函数创建了一个新文件:
export function checkUserExists (userId) {
database.ref('users').child(userId).once('value').then(function(result){
const exists = (result.val() !== null);
if (exists) {
var data = result.val();
setState({
username: data.username,
name: data.name
})
}
})
}
但这遇到了[未处理的承诺拒绝:ReferenceError:找不到变量:setState]
处理这个问题的正确方法是什么?我必须使用 Redux 吗?到目前为止,我找不到关于 SO 的明确答案。
更新:我也试过了
export default class Authentication extends Component {
checkUserExists = (userId) => {
database.ref('users').child(userId).once('value').then(function(result){
const exists = (result.val() !== null);
if (exists) {
var data = result.val();
setState({
username: data.username,
name: data.name
})
}
})
}
}
我试着这样称呼它
Authentication.checkUserExists(user.id);
但得到:TypeError: _authentication.default.checkUserExists 不是函数
【问题讨论】:
标签: reactjs react-native redux react-redux setstate