使用 mobx 继承 React 组件
Inherit react components with mobx
我有一个组件继承自抽象 class 并使用这样的 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 observer: You are trying to use 'observer' on a component that already has 'inject'. Please apply 'observer' before applying 'inject'
。然后我调试它说的渲染组件 inject-DayRow-with-matrixStore#0.render()
而不是预期的 DayFinderRow#0.render()
当我从 DayFinderRow
中删除装饰器时,警告消失了,但呈现的不是 DayFinderRow
组件而是 DayRow
。
我需要两个组件上的装饰器,因为我渲染了两个组件,但我想从 DayRow 派生 DayFinderRow,因为我只需要更改一个函数的行为。
这可以用 mobx 实现吗?
Facebook说继承不合适。这是他们的解释和建议。
我没有充分的理由使用 React Component 作为蓝图。
函数组合对我来说更有意义。
以下是面子书对此的说法:
我有一个组件继承自抽象 class 并使用这样的 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 observer: You are trying to use 'observer' on a component that already has 'inject'. Please apply 'observer' before applying 'inject'
。然后我调试它说的渲染组件 inject-DayRow-with-matrixStore#0.render()
而不是预期的 DayFinderRow#0.render()
当我从 DayFinderRow
中删除装饰器时,警告消失了,但呈现的不是 DayFinderRow
组件而是 DayRow
。
我需要两个组件上的装饰器,因为我渲染了两个组件,但我想从 DayRow 派生 DayFinderRow,因为我只需要更改一个函数的行为。
这可以用 mobx 实现吗?
Facebook说继承不合适。这是他们的解释和建议。
我没有充分的理由使用 React Component 作为蓝图。 函数组合对我来说更有意义。
以下是面子书对此的说法: