问题描述
在微信小程序端在函数组件中使用 mobx 注入 store 失败

在H5端正常

复现步骤
- taro init 项目
- 选择 ts + mobx 模板
- 将首页改为函数组件并注入 counterStore
import Taro, { FC } from "@tarojs/taro";
import { Button, View } from "@tarojs/components";
import { observer, inject } from "@tarojs/mobx";
type PageStateProps = {
counterStore: {
counter: number;
increment: Function;
decrement: Function;
incrementAsync: Function;
};
};
const Index: FC<PageStateProps> = props => {
console.log(props);
return (
<View>
{/* <View>{counter}</View> */}
<Button plain>点击</Button>
</View>
);
};
export default inject("counterStore")(observer(Index));
解决方案
可以直接 import counterStore, 删除 inject.
Mobx 已经不建议使用 inject 了, 因为 inject 的参数是字符串.
你甚至可以从 app.js 里删除 MobxProvider.
Mobx 现在的用法是: 只要你的组件用 observer 包起来, 它就能随 @observerable 的值变化.