Mobx 商店不会触发 react-native 项目的重新渲染
Mobx store doesn't trigger re-render on react-native project
我尝试了解如何将 MobX 与 React Native 结合使用。
我试图在 GH 中找到一些例子,但它们已经很老了。 (2-3岁).
我想在 Expo Bare (ExpoKit) 上编写应用程序,但我不明白为什么当我更改 MobX @observables 时我的组件没有重新渲染。
我用我的问题做了点心:https://snack.expo.io/@krasov/mobx-reproduction
Idk,可能是我看错了文档,但我无法弄清楚这里的问题是什么。
如果您使用的是 MobX 6,那么您现在需要在构造函数中使用 makeObservable
方法来使用装饰器实现与之前 MobX 5 相同的功能:
import { makeObservable } from "mobx"
class Store {
@observable string = 'Test String';
@action setString = (string) => {
this.string = string;
console.log(`new value = ${this.string}`);
};
constructor() {
// Just call it here
makeObservable(this);
}
}
虽然有新的东西可能会让你完全放弃装饰器,makeAutoObservable
:
import { makeAutoObservable } from "mobx"
class Store {
// Don't need decorators now
string = 'Test String';
setString = (string) => {
this.string = string;
console.log(`new value = ${this.string}`);
};
constructor() {
// Just call it here
makeAutoObservable (this);
}
}
这里有更多信息
https://mobx.js.org/migrating-from-4-or-5.html
和
https://mobx.js.org/react-integration.html
我尝试了解如何将 MobX 与 React Native 结合使用。 我试图在 GH 中找到一些例子,但它们已经很老了。 (2-3岁).
我想在 Expo Bare (ExpoKit) 上编写应用程序,但我不明白为什么当我更改 MobX @observables 时我的组件没有重新渲染。
我用我的问题做了点心:https://snack.expo.io/@krasov/mobx-reproduction
Idk,可能是我看错了文档,但我无法弄清楚这里的问题是什么。
如果您使用的是 MobX 6,那么您现在需要在构造函数中使用 makeObservable
方法来使用装饰器实现与之前 MobX 5 相同的功能:
import { makeObservable } from "mobx"
class Store {
@observable string = 'Test String';
@action setString = (string) => {
this.string = string;
console.log(`new value = ${this.string}`);
};
constructor() {
// Just call it here
makeObservable(this);
}
}
虽然有新的东西可能会让你完全放弃装饰器,makeAutoObservable
:
import { makeAutoObservable } from "mobx"
class Store {
// Don't need decorators now
string = 'Test String';
setString = (string) => {
this.string = string;
console.log(`new value = ${this.string}`);
};
constructor() {
// Just call it here
makeAutoObservable (this);
}
}
这里有更多信息 https://mobx.js.org/migrating-from-4-or-5.html 和 https://mobx.js.org/react-integration.html