mobx-state-tree 不使用 react-native 更新模型
mobx-state-tree does not update the model with react-native
我尝试用 react-native、mobx、mobx-state-tree 创建一个 User
模型
我的User
模特:
const UserProfileModel = types.model("UserProfile").props({
description: types.maybeNull(types.string),
})
/**
* Model description here for TypeScript hints.
*/
export const UserModel = types
.model("User")
.props({
created_at: types.optional(types.string, ""),
email: types.optional(types.string, ""),
first_name: types.optional(types.string, ""),
id: types.optional(types.string, ""),
last_name: types.optional(types.string, ""),
nick_name: types.maybeNull(types.string),
updated_at: types.optional(types.string, ""),
// @ts-ignore
profile: types.optional(UserProfileModel, {}),
})
.actions((self: any) => ({
updateNickName(nick_name: string): void {
self.nick_name = nick_name
}
}))
以及调用 updateNickName
操作的 class:
@inject("userModel")
@observer
export class EditMyProfileScreen extends React.Component {
@observable private readonly userProfile: IUser = {} as IUser
constructor(props) {
super(props)
this.userProfile = clone(props.userModel)
}
@autobind
private async sendUpdateToServer(): Promise<void> {
const { userModel } = this.props
// do some async request to the server
userModel.updateNickName(this.userProfile.nick_name)
console.log(userModel) // this console.log print an old version of the javascript object
}
render() {
// do stuff
}
}
但是调用userModel.updateNickName
后用户好像没有更新。
为什么 nick_name
字段没有更新?
将 mobx-state-tree
升级到 v3.15.0 后,问题似乎已解决。
我尝试用 react-native、mobx、mobx-state-tree 创建一个 User
模型
我的User
模特:
const UserProfileModel = types.model("UserProfile").props({
description: types.maybeNull(types.string),
})
/**
* Model description here for TypeScript hints.
*/
export const UserModel = types
.model("User")
.props({
created_at: types.optional(types.string, ""),
email: types.optional(types.string, ""),
first_name: types.optional(types.string, ""),
id: types.optional(types.string, ""),
last_name: types.optional(types.string, ""),
nick_name: types.maybeNull(types.string),
updated_at: types.optional(types.string, ""),
// @ts-ignore
profile: types.optional(UserProfileModel, {}),
})
.actions((self: any) => ({
updateNickName(nick_name: string): void {
self.nick_name = nick_name
}
}))
以及调用 updateNickName
操作的 class:
@inject("userModel")
@observer
export class EditMyProfileScreen extends React.Component {
@observable private readonly userProfile: IUser = {} as IUser
constructor(props) {
super(props)
this.userProfile = clone(props.userModel)
}
@autobind
private async sendUpdateToServer(): Promise<void> {
const { userModel } = this.props
// do some async request to the server
userModel.updateNickName(this.userProfile.nick_name)
console.log(userModel) // this console.log print an old version of the javascript object
}
render() {
// do stuff
}
}
但是调用userModel.updateNickName
后用户好像没有更新。
为什么 nick_name
字段没有更新?
将 mobx-state-tree
升级到 v3.15.0 后,问题似乎已解决。