我有一个组件继承自抽象类并使用这样的 mobx 装饰器:
@inject("matrixStore")
@observer
export default class DayRow<T extends IAbstractRowProps = IAbstractRowProps> extends AbstractRow<T> {
// ...
}
渲染函数本身存在于 AbstractRow 组件中。
我从 DayRow 继承了另一个组件:
@inject("matrixStore")
@observer
export default class DayFinderRow extends DayRow<IDayFinderRowProps> {
}
但是当我尝试渲染 DayFinderRow
时,mobx 发出警告:
Mobx 观察者:您正在尝试在已经具有“注入(inject)”的组件上使用“观察者”。请在应用“注入(inject)”之前应用“观察者”
。然后我调试渲染的组件,它说 inject-DayRow-with-matrixStore#0.render()
而不是预期的 DayFinderRow#0.render()
当我从 DayFinderRow
中删除装饰器时,警告消失了,但呈现的不是 DayFinderRow
组件,而是 DayRow
。
我需要两个组件上的装饰器,因为我渲染了两个组件,但我想从 DayRow 派生 DayFinderRow,因为我只需要更改一个函数的行为。
这可以用 mobx 实现吗?
最佳答案
Facebook说继承不合适。这是他们的解释和建议。
我没有充分的理由使用 React Component 作为蓝图。 函数组合对我来说更有意义。
这是面子书对此的说法:
关于reactjs - 使用 mobx 继承 React 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47775254/