如何使用@inject绑定函数?

时间:2017-02-09 09:05:02

标签: javascript reactjs mobx mobx-react

当我使用mobx-react时,我使用inject装饰器来传输商店。但是当我到达商店时如

@inject("store") @observer
class item extends Component {
  constructor() {
    this.store = this.props.store;
  }
}

但是当我想调用store的{​​{1}}函数时,我发现上下文store.getUser()函数不是getUser,我怎么能绑定{{} 1}}到this

PS:商店如下:

this

我使用store之类的

class Store {
  @observable user = "Sarah";
  @computed
  get getUser() {
    return user + "Ok";
  }
}
export default new Store();

2 个答案:

答案 0 :(得分:1)

您必须在商店中使用this.user

class Store {
  @observable user = "Sarah";
  @computed
  get getUser() {
    return this.user + "Ok";
  }
}
export default new Store();

computed是一个getter,因此您无法通过函数调用访问它。只需取消引用该字段:

render() {
  <div>{this.store.getUser}</div>
}

答案 1 :(得分:1)

class Store {
  @observable user = "Sarah";
  @computed
  get okUser() {
    return this.user + "Ok";
  }
}

const store = new Store();
console.log(store.okUser);

@computed是getter,因此您无需将其称为函数。