Я новичок, чтобы реагировать, и я только начал использовать инструмент управления состоянием Mobx. Я читаю информацию о mobx здесь и там, но есть несколько понятий, которые я не понимаю.
Я знаю, что реакция перерисовывается каждый раз, когда локальное состояние изменяется с помощью setState. Это цель повторного рендеринга - это компонент, в котором изменилось его локальное состояние (я прав?). Но для mobx, когда наблюдаемое свойство хранилища было изменено действием в компоненте, я не уверен, какой компонент будет перерисован здесь, потому что это измененное свойство не является «локальным», как в примере выше.
Так, например, если я изменю наблюдаемое свойство, определенное в классе CityStore, в компоненте с именем city (предположим, что у меня есть и другие компоненты), то какие компоненты будут перерисованы? городской компонент получает рендеринг, потому что я изменил наблюдаемое свойство там? или все компоненты, использующие это наблюдаемое свойство, перерисовываются? Хотелось бы узнать механизм повторного рендеринга компонентов с оформлением @observer.
Созданное хранилище mobx передается с использованием провайдера и @inject. Я не совсем уверен, что делает @inject. Если я хочу использовать магазин под названием cityStore в компоненте city, я делаю следующее: <Provider city = {cityStore}> <city/> </Provider
>
Затем компонент city и все его дочерние компоненты могут получить доступ и изменить cityStore. тогда зачем мне отдельно ставить @inject для каждого компонента, который хочет использовать cityStore, если я уже использовал провайдера? это просто синтаксис, поэтому провайдер и @inject всегда должны идти вместе? Так, например, если я позвонил <Provider city = {cityStore}> <city/> </Provider>
в родительский компонент city и не поставил @inject для некоторых дочерних компонентов компонента city, этот компонент не сможет получить доступ к cityStore?
Описание вопроса немного длинное, но я буду очень признателен за ответы, спасибо!