从react本机组件调用javascript函数

从react本机组件调用javascript函数,javascript,reactjs,react-native,Javascript,Reactjs,React Native,实际上,我对react native还不熟悉,我正在调用singleton类中的javascript函数。我想从构造函数中的另一个react本机组件调用此函数。但如果我尝试调用,它不会调用该函数 代码: 不要从单例文件导出类,而是像以下那样导出其对象: export default new LoginUtil() 然后导入该对象并调用该类的任何函数,就像JavaScript中的单例模式是通过利用导出来实现的一样 像这样: // LoginUtils.js class LoginUtil {

实际上,我对react native还不熟悉,我正在调用singleton类中的javascript函数。我想从构造函数中的另一个react本机组件调用此函数。但如果我尝试调用,它不会调用该函数

代码:


不要从单例文件导出类,而是像以下那样导出其对象:

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();

   }
   ...
  }