我正在尝试实现redux-orm,并且不确定在我的模型上处理更新元属性的最佳方法。在最新版本中忽略静态Reducer的返回值,并且通过API查看我无法从静态reducer函数内部的模型中修改meta属性。
IE,对于标准实体状态更新,以下是the repo的示例:
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
我找到了几个a static metaReducer implementation的例子,但这些都是旧版本。我可以制作一个兄弟缩减器来处理这个,但我更喜欢在我的实际ORM实体上使用所有东西,并使用提供的元属性。
如果有人有一个使用最新版本的redux-orm实现元缩减器的简单示例,那将非常感激。
谢谢!
答案 0 :(得分:0)
基本上,您必须确保您的模型包含一个密钥(在下面的示例type
中),以便您轻松检索每个资源的正确session
商店。
然后使用meta reducer进行基本的CRUD操作非常简单,它可以通过redux-orm处理所有模型
以下是我在app 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
}