Mobx @inject @observer заказ

У меня есть выборка в моем componentDidMount, которая не обновляет данные appState, когда я делаю @observer @inject('appState'), но она будет стабильно работать, когда у меня есть @inject('appState') @observer.

При этом в консоли появляется предупреждение о неправильном заказе.

Mobx observer: You are trying to use 'observer' on a component that already has 'inject'. Please apply 'observer' before applying 'inject'

Какой правильный порядок и почему?


person Abdo    schedule 06.07.2017    source источник
comment
@inject('appState') @observer - правильный порядок. Я тоже думаю, что он работает без @observer, т.е. просто @inject('appState').   -  person Tholle    schedule 06.07.2017
comment
@Tholle @inject('appState') @observer - это то, что у меня работает. По-видимому, предупреждение неверное. Без @observer не работает =)   -  person Abdo    schedule 06.07.2017
comment
@Tholle после того, как я заменил все заказы, пропало предупреждающее сообщение. Похоже, что это была какая-то опечатка в Mobx, и они неправильно перевернули предупреждающее сообщение. знак равно   -  person Abdo    schedule 06.07.2017
comment
Ах ты прав. Я всегда делаю @inject(...) @observer, но, должно быть, неправильно понял этот пост в блоге , поскольку я думал, что @inject тоже работает.   -  person Tholle    schedule 06.07.2017


Ответы (1)


Декораторы - это сахар для вызовов функций, so @a @b class C похож на a(b(class C)), другими словами, самый внутренний (или крайний правый) - это первый примененный декоратор. Таким образом, применение observer перед применением inject означает: inject("stores")(observer(Component)), другими словами, порядок, который работает для вас, - это тот порядок, который предназначен: @inject('appState') @oberver Component

person mweststrate    schedule 06.07.2017