mobex,@注入商店

时间:2017-06-18 12:56:26

标签: javascript reactjs mobx mobx-react

目前我使用的是mobx <Provider store={store} />,其中store包含所有具有observables的mobx商店类。

在组件内部,我使用

访问它
@inject("store")
@observe
class MyComponent ....

但这意味着如果我只想访问通知商店,我必须以this.props.store.notification.message为例,这就变得非常冗长。有没有办法获得通知存储?因为我们正在注入字符串"store"而不是对象,所以我没有看到解构它的方法。

1 个答案:

答案 0 :(得分:4)

决定将其作为答案发布,因为它可能有助于其他人:

如mobx-react(https://github.com/mobxjs/mobx-react)文档中所示,提供商可以接受您传递给它的任何财产,而不仅仅是&#34;存储&#34;。

因此,解决方案是创建一个带有商店的对象,并使用扩展运算符(或任何其他对您感觉舒适的方式)将其传递给Provider。

env:
  <var-name>: <value>
  <var-name>: <value>

如果您正在使用mobx-react包并想要注入多个商店 - 只需将商店传递给以逗号分隔的@inject函数

const stores = { 
     storeOne,
     storeTwo,
}

return (
   <Provider {...stores}>
      <MyComponent />
    </Provider>
)

我创建了一个带有多个商店注入示例的笔:https://codepen.io/evgen/pen/NgpVMw