2017-10-19 31 views
1

我想構建mobx項目看起來像redux項目。在一個文件中存儲配置,在另一個文件中執行操作,或者在第三個文件中執行其他邏輯和反應。結構Mobx項目像Redux

另外,最佳實踐是什麼?擁有一個或更多的商店。我會怎麼做(從一個類中取出@action並從另一個文件中調用它)。任何人都可以舉一些很好的結構化他們的項目的例子嗎?

回答

0

修飾器(@)是使用MobX和類的好方法,但是您可以在不使用它們的情況下使用MobX。

你可以構建應用程序像這樣,通過使用action功能版本:

例(JSBin

// state.js 
useStrict(true); 

const appState = observable({ 
    count: 0, 
    firstName: 'Igor', 
    lastName: 'Vuk', 
    fullName: computed(function() { 
    return `${this.firstName}-${this.lastName}`; 
    }) 
}); 

// actions.js 
const increment = action(function() { 
    ++appState.count; 
}); 

const changeLastName = action(function() { 
    appState.lastName = 'Stravinskij'; 
}); 

// app.js 
autorun(() => { 
    console.log(`${appState.fullName} has been logged in for ${appState.count} seconds`); 
}); 

setInterval(() => { 
    increment(); 
}, 1000); 

setTimeout(() => { 
    changeLastName(); 
}, 3000) 
+1

感謝Tholle。這很不錯。那麼這是否意味着在使用@裝飾器時我不能做同樣的事情(單獨的動作,計算......)? –

+0

你可以把你的動作(在這個例子中是increment和changeLastName)放在一個單獨的'class Actions'中並使用裝飾器,並且創建它的一個實例'const actions = new Actions();'如果你願意的話。 – Tholle

+0

謝謝Tholle。我做的。它工作得很好。你有什麼建議?你將如何構造它。將操作放在單獨的文件/類中,並且與可觀察值一起留在一個類中進行計算?反應和其他邏輯怎麼樣? –