我正在使用带有JS和mobx
decorate
方法的最新create-react-app设置。
import { observable, action, decorate } from 'mobx'
class UserStore {
users = []
currentUser = {}
setUsers(value) {
this.users = value
}
}
decorate(UserStore, {
users: observable,
currentUser: observable,
setUsers: action
})
export default UserStore
我可以使用存储并读取空的users
和currentUser
观察值,但是当我尝试使用setUsers
操作时,会收到以下错误:
TypeError: Cannot set property 'users' of undefined
看起来像this
尚未定义,但这是大多数MobX教程显示的常用方法,不应引发错误...
答案 0 :(得分:0)
在MobX与原始JavaScript结合使用时,不同的上下文可能会造成一些混乱... MobX引入了bound action
s,以简化此操作。
使用action.bound
进行正确的修饰是:
setUsers: action.bound
或者我们可以使用lambda函数来确保上下文正确:
setUsers = value => {
this.users = value
}
任何一项更改都将确保setter函数的上下文正确,并且可以使用类this
。请查看answers to a similar question,以获得更详细的说明。