1
我想構建mobx項目看起來像redux項目。在一個文件中存儲配置,在另一個文件中執行操作,或者在第三個文件中執行其他邏輯和反應。結構Mobx項目像Redux
另外,最佳實踐是什麼?擁有一個或更多的商店。我會怎麼做(從一個類中取出@action並從另一個文件中調用它)。任何人都可以舉一些很好的結構化他們的項目的例子嗎?
我想構建mobx項目看起來像redux項目。在一個文件中存儲配置,在另一個文件中執行操作,或者在第三個文件中執行其他邏輯和反應。結構Mobx項目像Redux
另外,最佳實踐是什麼?擁有一個或更多的商店。我會怎麼做(從一個類中取出@action並從另一個文件中調用它)。任何人都可以舉一些很好的結構化他們的項目的例子嗎?
修飾器(@
)是使用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)
感謝Tholle。這很不錯。那麼這是否意味着在使用@裝飾器時我不能做同樣的事情(單獨的動作,計算......)? –
你可以把你的動作(在這個例子中是increment和changeLastName)放在一個單獨的'class Actions'中並使用裝飾器,並且創建它的一個實例'const actions = new Actions();'如果你願意的話。 – Tholle
謝謝Tholle。我做的。它工作得很好。你有什麼建議?你將如何構造它。將操作放在單獨的文件/類中,並且與可觀察值一起留在一個類中進行計算?反應和其他邏輯怎麼樣? –