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

Reactjs 如何在redux orm中创建模型的新实例以及关系?,reactjs,redux,redux-orm,Reactjs,Redux,Redux Orm,使用redux orm时,如何在创建模型实例期间添加相关数据 例如,给定以下两种模型: // 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

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

例如,给定以下两种模型:

// 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'),
    };
}
我在pet模型中创建的减速器如下所示:

        case 'PET/CREATE':
            const newPet = Pet.create(action.payload);
            newPet.user.add(action.parentId); // parentId is the user id
            break;
但是,这会导致错误,因为newPet.user未定义。我还尝试了使用refs的

        case 'PET/CREATE':
            const newPet = Pet.create(action.payload).withRefs;
            newPet.user.add(action.parentId); 
            break;
我还尝试重新查找id:

        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;
编辑

发现我能做到

const newPet = Pet.create({ ...action.payload, user: action.parentId });
但不是积极的,这是正确的方法,如果它确实正确地联系在一起,那么现在就留下问题

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

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 ORM上发表了几篇文章,作为文章的前两部分,讨论了我根据自己使用Redux的经验开发的技术。

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

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 ORM上发表了几篇文章,作为本文的前两部分,讨论了我根据自己使用Redux的经验开发的技术。

太好了,这很有效。我猜是由于创建后关系没有准备好(即
const pet=pet.create({});typeof pet.user===“undefined”
)而引发的。我习惯于雄辩(laravels orm),所以我认为这是可行的。旁注,在我的react草稿问题中添加了一条评论,使用redux orm+草稿/查看/编辑模式(根据您的建议)的示例回购,谢谢!太好了,成功了。我猜是由于创建后关系没有准备好(即
const pet=pet.create({});typeof pet.user===“undefined”
)而引发的。我习惯于雄辩(laravels orm),所以我认为这是可行的。旁注,在我的react草稿问题中添加了一条评论,使用redux orm+草稿/查看/编辑模式(根据您的建议)的示例回购,谢谢!