我正在尝试实现redux-orm,但不确定在我的模型上更新元属性的最佳方式。在最新版本中,静态reducer的返回值被忽略了,并且通过API我看不到任何方法来修改静态reducer函数中模型的meta属性。
例如,对于标准实体状态更新,以下是来自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实体上,并利用提供的meta属性。
如果任何人有一个用最新版本的redux-orm实现meta reducer的简单示例,将不胜感激。
谢谢!
发布于 2018-06-07 23:26:51
基本上,您必须确保您的模型包含一个键(在下面的示例中,这里是type),它允许您轻松地检索每个资源的正确session存储。
然后,使用meta reducer通过redux-orm处理所有模型就非常容易完成基本的CRUD操作
下面是我在我的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
}https://stackoverflow.com/questions/50648602
复制相似问题