如何构建mobx
How to structure mobx
我正试图弄清楚如何构建我的应用程序,例如,我有一个模型User,一个通用的UserStore来跟踪到目前为止所有用户的加载情况,还有一些与UI相关的商店,如FriendList、PendingFriendList,BlockedUserList、LikedUserList等:
class User {
id;
@observable name;
@observable avatar;
// others functions and fields
}
class UserStore {
@observable users = [];
function resolve(id) { /*return by id*/}
function createOrUpdateUser(json) { /* add user to this.users */ }
}
class FriendStore {
@observable users = [];
hasNextPage = true;
currentPage = null;
function loadNextPage(page) {
api.loadFriends(page >= 0 ? page : this.currentPage + 1).then( users => {
users.forEach( user => {
this.users.push( UserStore.createOrUpdateUser(user) )
})
})
}
}
class PendingFriendUsers {
@observable users = [];
@observable query = null;
hasNextPage = true;
currentPage = null;
function loadNextPage(page) {
// more or less like FriendStore
}
}
class BlockedUserStore {
// more or less like FriendStore
}
我的问题是:这就是路吗?或者有更好的方法吗??
我曾与Mobx&反应,所以我发现这个结构最适合我。
存储
- 域存储
- 存储应用程序中所需的数据
用于ex.用户数据
- 存储应用程序中所需的数据
- 查看商店
- 存储展示应用程序所需的数据
例如加载,错误变量
- 存储展示应用程序所需的数据
型号
- 您可以在此处定义数据模型
对于前用户模型
服务
- 在这里你可以进行服务,api调用
组件
- 容器或智能组件
- 哑或表象成分
正如您可能已经注意到的,MobX没有规定如何构建存储,因此有许多方法是可能的。
但就我个人而言,我确实会以这种方式大致设置(类似于文档中建议的商店设置)。它可能有点过时,但很容易遵循imho,它是一个可扩展的模型,有明确的关注点分离。替代方法可以在这个例子回购或相关项目中找到,如mobx反应堆
小提示:在您的api回调中使用transaction
,以便在通知任何观察者之前立即应用所有更改。
Mobx本身有一些官方文档描述了他们对结构的想法。
本节包含了我们在Mendix使用MobX时发现的一些构建大规模可维护项目的最佳实践。本节是固执己见的,您决不会被迫采用这些做法。使用MobX和React有很多方法,这只是其中之一。
请在此处阅读文章:https://mobx.js.org/defining-data-stores.html
相关文章:
- 我应该如何从xml文件构建一个javascript页面
- 如何在DOM元素上按类型构建此函数
- Sencha Touch构建-排除文件
- RubyonRails——构建交互式接口应该朝哪个方向发展
- 如何在构建node-webkit应用程序后获取外部资源
- Ext.js从json构建模型关系的问题
- 如何为生产构建angular2应用程序
- Grunt构建导致Angular应用程序在dist上崩溃
- 构建JS测试,警报窗口重复上一个Q,而不是问下一个Q
- 动态构建一个数据表与scriplets
- 如何只使用特定的表行构建简单的手风琴
- 为tweet构建chrome扩展
- 如何构建angular.js应用程序
- 如何使用Meteorjs构建实时应用程序
- jquery从2个json字符串构建一个复选框表单
- webpack开发模式和生产构建模式之间有什么区别
- js文件是否阻碍了war文件的构建
- 如何在Javascript中从select标记的一系列选项中构建二维数组
- 如何使用angularjs构建交互式滚动着陆页
- 如何构建mobx