我不能因为上帝的爱找到任何东西,或者我只是不知道究竟要搜索什么。我是React和React Native的新手,我需要RN项目的帮助。我尝试做的是在我的组件auto_login()
中调用函数MainLogic
。该函数如下所示,并放在module.exports
:
auto_login: function(navigator){
if(GLOBALS.LOGGED_IN != true){
Keychain
.getGenericPassword()
.then(function(credentials){
fetch(GLOBALS.API_URL, {
method: "POST",
headers: {
'Accept': 'application/x-www-form-urlencoded',
'Content-Type': 'application/x-www-form-urlencoded',
},
body: "username=" + credentials.username + "&password=" + credentials.password,
})
.then((response) => response.json())
.then((response) => {
if(JSON.stringify(response.status).replace(new RegExp('"', 'g'), '').match("OK")){
GLOBALS.LOGGED_IN = true;
GLOBALS.USERNAME = credentials.username;
GLOBALS.PASSWORD = credentials.password;
navigator.push({
id: 'news'
});
}
})
.catch((e) => {
console.warn(e);
})
.done();
});
}
},
现在我从
调用此功能componentDidMount: function(){
MainLogic.auto_login(navigator);
},
在render
函数之前,但我意识到导航器已脱离上下文或其他东西。我想帮助理解我如何调用此功能并正确绑定navigator
。我现在正在收到警告:
TypeError: navigator.push is not a function. (in 'navigator.push({id:'news'})', 'navigator.push' is undefined.
非常感谢任何理解这一点的帮助!
编辑:我使用的是React.createClass。
答案 0 :(得分:1)
由于您尝试在 main_logic.js 文件中替换导航器, auto_login中此 关键字 没有指出你的功能的背景。绑定也没有帮助,因为此 关键字仍然指向相同的上下文。
我能想到的最好方法是将上下文此 关键字传递给main_logic.js,然后再调用
this.refs['nav']
我们会将其更改为
paramName.refs['nav']
我怀疑可能有更好的解决方案,因此我鼓励您深入了解并在React Native和JS中进行迭代。