MobX actions, computed и observable в отдельных файлах - это возможно?

Есть ли возможность вынести @action, @computed и @observable сущности, из mobx store, в отдельные файлы, без sms и регистрации костылей?


Ответы (1 шт):

Автор решения: Yugofx

Все, что делают декораторы, вы можете сделать вручную. По сути, они просто оборачивают вашу функцию (или значения) в собственные функции mobx и регистрируют прокси-доступ к ним.

Объявите все, что вы хотите разделить, в отдельных файлах. Импортируйте в любые файлы, и оборачивайте на месте.

Или сразу возвращайте обернутыми.

Не:

class Test {
    @observable value
}

А

class Test {
    constructor() {
        this.value;
        decorate(this, { value: observable.ref })
    }
}

Или если говорить про actions

// actions.js
export function increment() {
    this.counter++;
}

// Test.js
import { increment } from './actions'; 

...
constructor() {
    this.increment = action(increment.bind(this));
}
→ Ссылка