首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建模型的新实例以及redux中的关系?

如何创建模型的新实例以及redux中的关系?
EN

Stack Overflow用户
提问于 2016-10-30 06:24:46
回答 1查看 672关注 0票数 0

当使用redux-orm时,如何在创建模型实例期间添加相关数据?

例如,考虑到以下两种模式:

代码语言:javascript
复制
// User
import {fk, many, Model} from 'redux-orm';
export default class User extends Model {
    static modelName = 'User';

    static fields = {
        pets: many('Pet', 'pets'),
    };
}

// Pet
import {fk, many, Model} from 'redux-orm';

export default class Pet extends Model {
    static modelName = 'Pet';

    static fields = {
        user: fk('User', 'pets'),
    };
}

我在宠物模型中创建的减速器如下所示:

代码语言:javascript
复制
        case 'PET/CREATE':
            const newPet = Pet.create(action.payload);
            newPet.user.add(action.parentId); // parentId is the user id
            break;

但是,这会导致错误,因为newPet.user是未定义的。我也尝试过withRefs

代码语言:javascript
复制
        case 'PET/CREATE':
            const newPet = Pet.create(action.payload).withRefs;
            newPet.user.add(action.parentId); 
            break;

我还试图重新查找id:

代码语言:javascript
复制
        case 'PET/CREATE':
            const newPet = Pet.create(action.payload);
            // console.log(newPet.id); // correctly outputs id
            Pet.withId(newPet.id).user.add(action.parentId);
            break;

编辑

发现我能做到

代码语言:javascript
复制
const newPet = Pet.create({ ...action.payload, user: action.parentId });

但不是积极的,这是正确的方法,如果它实际上是正确的联系,所以问题暂时不谈。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-30 17:16:46

“手动”传递关系字段的相关ID值是一种方法。另一个方法是创建第一个模型,然后在创建期间或之后将第一个模型实例传递给第二个模型实例:

代码语言:javascript
复制
const fred = User.create({name : "Fred"});

// Pass during creation
const pet = Pet.create({name : "Spot", user : fred});

// Or after creation
const pet = Pet.create({name : "Spot"});
pet.user = fred;

// Then ask Redux-ORM to apply queued updates and return the updated data
return session.reduce();

编辑

更新:我在Redux上发表了几篇文章,作为“实用剩余价值”系列的前两部分,讨论了我根据自己使用Redux的经验开发的技术。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40326553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档