最近我开始使用 mobx 和 react 和 mobx-react 库。
我想使用功能性 React 组件来创建我的视图。
我想创建一个辅助函数,它采用选择器函数和组件,调用注入(以选择器函数作为参数)并观察该组件 - 有效地将这个组件连接到 mobx-react 存储(取自提供者上下文)并且只提供此组件所需的属性。
但我无法让它工作。正在调度操作,但视图不会对此更改做出反应(存储属性确实会更改,但组件不会对此更改做出反应)。
这是我的辅助功能:
import { observer, inject } from 'mobx-react';
export function connect(selectorFunction, component) {
return inject(selectorFunction)(observer(component));
}
这是我的组件:
import React from 'react';
import { connect } from 'utils';
const selector = (stores) => {
return {
counter: stores.counterStore.counter,
double: stores.counterStore.double,
increment: stores.counterStore.increment
};
};
const Counter = ({ counter, double, increment }) => {
return (
<div className="counter">
<p>{ counter }</p>
<p className="double">{ double }</p>
<button onClick={increment}>+1</button>
</div>
);
};
export default connect(selector, Counter);
这是我的商店:
import { observable, computed, action } from 'mobx';
export default class Counter {
@observable counter = 0;
@action
increment = () => {
this.counter++;
}
@computed
get double() {
return this.counter * 2;
}
}
(没有显示提供者和其他简单的东西,但它设置正确)。
谢谢!每个答案都非常感谢。