如何使用最新的 redux-orm 版本 (0.9.x) 更新模型的"meta"状态?



我正在尝试实现 redux-orm,但不确定处理更新模型元属性的最佳方法。静态化简器的返回值在最新版本中被忽略,通过 API,我看不到任何从静态化简器函数内部的模型中修改元属性的方法。

IE,对于标准实体状态更新,下面是存储库中的示例:

static reducer(action, Book, session) {
switch (action.type) {
case 'CREATE_BOOK':
Book.create(action.payload);
break;
case 'UPDATE_BOOK':
Book.withId(action.payload.id).update(action.payload);
break;
case 'REMOVE_BOOK':
const book = Book.withId(action.payload);
book.delete();
break;
... this function calls the model directly and has no return value

我找到了几个静态metaReducer实现的例子,但这些都是旧版本。我可以做一个同级化简器来处理这个问题,但我更愿意一切都在我的实际 ORM 实体上,并利用提供的元属性。

如果有人有一个使用最新版本的redux-orm实现元化简器的简单示例,将不胜感激。

谢谢!

基本上,您必须确保您的模型包含一个键(在下面的示例中type(,该键使您可以轻松检索每个资源的正确session存储。

然后,使用元化简器执行基本的 CRUD 操作非常容易,该化简器将通过 redux-orm 处理您的所有模型

这是我在应用程序中使用的一个非常简单的示例代码,redux-orm@^ 0.9.0

export default function resourcesReducer (state, action) {
const session = orm.session(getDefaultState(state))
const resource = action.resource
switch (action.type) {
case RESOURCE_CREATE: {
session[resource.type].create(resource)
break
}
case RESOURCE_EDIT: {
session[resource.type].withId(resource.id).update(resource)
break
}
case RESOURCE_DELETE: {
session[resource.type].withId(resource.id).delete(resource)
break
}
}
return session.state
}

最新更新