Я использую TypeScript, React и Mobx State Tree.
Это мой магазин (index.ts
):
import { types as t } from 'mobx-state-tree'
import { Data } from './Data'
export const State = t
.model('State', {
data: t.optional(Data, {}),
})
.views(self => ({}))
.actions(self => ({}))
export type StateType = typeof State.Type
export interface Stateable {
state?: StateType
}
Data.ts
:
import { types as t } from 'mobx-state-tree'
export const Data = t
.model('Data', {})
.views(self => ({
get data() {
return []
},
}))
.actions(self => ({}))
Это компонент React (MyComponent.tsx
):
import * as React from 'react'
// @ts-ignore
import { withParentSize } from '@vx/responsive'
import { inject, observer } from 'mobx-react'
import { Calculus } from '../lib/Calculus'
import { Stateable } from '../state'
interface Props extends Stateable {
parentWidth?: number
parentHeight?: number
}
// @ts-ignore
@withParentSize
@inject('state')
export class MyComponent extends React.Component<Props> {
calculus = new Calculus()
clickHandler = () => {
this.calculus.start()
}
render() {
const { parentWidth, parentHeight } = this.props
return (
<div onClick={this.clickHandler}>
Click me!
</div>
)
}
}
А это мой Calculus.ts
класс:
import { Stateable, StateType } from '../state'
import { inject } from 'mobx-react'
// @inject('state')
export class Calculus {
start() {
console.log('start!')
// HERE I WANT TO CALL data()
}
// something ...
}
Я хочу иметь возможность вызватьdata()
метод с точки кода, где я размещаю комментарий.Как я могу сделать?Я пытаюсь с инструментами и расширениями, но это не работает ..
Я не могу изменить структуру кода.Как я могу это сделать?