【发布时间】:2021-01-29 03:32:57
【问题描述】:
我第一次使用mobx 和mobx-react-lite,我可以看到@action 没有触发任何事件。
我的意图是当我单击按钮时,名称 CHAN 应更改为 XIAN。但它没有发生。你能告诉我我哪里做错了吗?提前致谢。
【问题讨论】:
标签: reactjs mobx mobx-react mobx-react-lite
我第一次使用mobx 和mobx-react-lite,我可以看到@action 没有触发任何事件。
我的意图是当我单击按钮时,名称 CHAN 应更改为 XIAN。但它没有发生。你能告诉我我哪里做错了吗?提前致谢。
【问题讨论】:
标签: reactjs mobx mobx-react mobx-react-lite
除了@Christiaan 回答,您还可以使用makeAutoObservable 并完全放弃装饰器!
import { observable, action, makeAutoObservable } from "mobx";
export class myStore {
name: string = "CHAN";
constructor() {
makeAutoObservable(this)
}
setName(newName: string) {
this.name = newName;
}
}
【讨论】:
您在 myStore 构造函数中缺少 makeObservable。
import { observable, action, makeObservable } from "mobx";
export class myStore {
@observable name: string = "CHAN";
constructor() {
makeObservable(this)
}
@action
setName(newName: string) {
this.name = newName;
}
}
【讨论】:
observer 包裹在app.tsx 中的代码周围是否足以让整个应用程序使其反应?
observer 反应的组件。这是因为observer 只订阅了它自己的渲染函数中的消费属性。例如。如果您将完整的商店传递给子组件,它不会重新渲染,因为商店本身不会改变。