从react本机组件调用javascript函数
实际上,我对react native还不熟悉,我正在调用singleton类中的javascript函数。我想从构造函数中的另一个react本机组件调用此函数。但如果我尝试调用,它不会调用该函数 代码:从react本机组件调用javascript函数,javascript,reactjs,react-native,Javascript,Reactjs,React Native,实际上,我对react native还不熟悉,我正在调用singleton类中的javascript函数。我想从构造函数中的另一个react本机组件调用此函数。但如果我尝试调用,它不会调用该函数 代码: 不要从单例文件导出类,而是像以下那样导出其对象: export default new LoginUtil() 然后导入该对象并调用该类的任何函数,就像JavaScript中的单例模式是通过利用导出来实现的一样 像这样: // LoginUtils.js class LoginUtil {
不要从单例文件导出类,而是像以下那样导出其对象:
export default new LoginUtil()
然后导入该对象并调用该类的任何函数,就像JavaScript中的单例模式是通过利用导出来实现的一样 像这样:
// LoginUtils.js
class LoginUtil {
constructor() {
// Only called once
this.token = 'initial';
}
setLoginToken(token) {
this.token = token;
}
getLoginToken(){
return this.token;
}
}
export default new LoginUtil();
诀窍是在导出实例时,它将处理单个实例,并避免编写用于实例化的样板代码
然后在组件文件中执行以下操作:
import loginUtils from './LoginUtils';
export default class CustomScreen extends React.Component {
constructor(){
const token = loginUtils.getLoginToken()
}
}
编辑:
您可能无法工作的原因是,您需要在组件构造函数中添加super()
,作为第一条语句:
class CustomScreen extends React.Component {
constructor(){
super();
LoginUtil.getInstance().getLoginToken();
}
...
}
class CustomScreen扩展了React.Component{
构造函数(){
超级()
this.state={token:LoginUtil.getInstance().getLoginToken()};
}
render(){
returnToken:{this.state.Token}
}
}
罗吉努蒂尔类{
静态实例=null;
静态createInstance(){
var object=new LoginUtil();
返回对象;
}
静态getInstance(){
如果(!LoginUtil.instance){
LoginUtil.instance=LoginUtil.createInstance();
}
返回LoginUtil.instance;
}
getLoginToken(){
返回“令牌测试”
}
}
ReactDOM.render(,document.getElementById('root'))
理想情况下,它应该可以工作。片段中似乎没有任何错误。你到底犯了什么错误?
class CustomScreen extends React.Component {
constructor(){
super();
LoginUtil.getInstance().getLoginToken();
}
...
}