2017-06-18 49 views
0

目前我正在使用mobx <Provider store={store} />,其中商店包含所有有可觀察性的mobx商店類。mobex,@inject只有商店的特定部分

內部組件的訪問它使用

@inject("store") 
@observe 
class MyComponent .... 

但是,這意味着,如果我要訪問只是通知商店,我不得不this.props.store.notification.message它例如,這會變得非常冗長。有沒有辦法讓通知商店?當我們注入一個字符串"store"而不是對象時,我沒有看到解構它的方法。

+0

@EvgenySorokin這實際上是一個非常好的調用,但在這種情況下,我如何將這些存儲注入到一個組件中,是否可以使用多個'@ inject'裝飾器? – Ilja

回答

3

決定後它的答案,因爲它可能會幫助別人:

由於文檔中顯示mobx反應的(https://github.com/mobxjs/mobx-react)提供可以接受任何財產,你傳遞給它的,不僅是「專賣店」 。

因此,解決方案是創建一個帶有商店的對象,並使用擴展運算符(或其他任何對您舒服的方式)將其傳遞給提供商。

const stores = { 
    storeOne, 
    storeTwo, 
} 

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

如果您使用mobx反應的包,並要注入多個商店 - 只是通過商店@Inject用逗號

@inject('storeOne', 'storeTwo') 

我創建了一個筆多個商店的例子分離功能注入:https://codepen.io/evgen/pen/NgpVMw