Access static variable from another class in React

2020-03-01 08:19发布

问题:

in my react-native app I currently have a User class in which I define a current user as below:

class User {
    static currentUser = null;

    //other relevant code here

    static getCurrentUser() {
        return currentUser;
    }
}

export default User;

In a different class, I am trying to access the set value of this currentUser. I cannot figure out how to correctly call this function; I am getting the error User.getCurrentUser is not a function. Should I be calling this function in a different way?

var User = require('./User');

getInitialState: function() {

    var user = User.getCurrentUser();

    return {
        user: user
    };


},

回答1:

You are mixing import / export styles. You should either change your import to

var User = require('./User').default

or

import User from './User'

Or change your export:

module.exports = User


回答2:

I think you also forgot the this keyword for returning the static "currentUser" field:

class User {
  constructor() {}

  static currentUser = {
    uname: 'xxx',
    firstname: 'first',
    lastname: 'last'
  };

  static getCurrentUser() {
    return this.currentUser;
  }
}

console.log(User.getCurrentUser());


回答3:

Try arrow function:

class User {
    static currentUser = null;

    static getCurrentUser = () => {
        return currentUser;
    }
}
export default User;