私はしばらくの間、レフィックスのものを読んできました。そして私には奇妙なことがあります。人々のほとんどの例では、すべてのコピー論理は減速器を介して処理されます。 私はtypescriptを使用しており、よりクラスベースのアプローチを採用したいと考えています。しかし、多分私は何かを逃しています。クローンしてから還元法で突然変異を起こす
私はショッピングカートクラスを持っているとしましょう。カート減速機およびカートの動作に加えて。
export class Cart
{
private items:{[key:string]:number} = {};
constructor(items:{[key:string]:number} = {})
{
Object.assign(this.items, items);
}
public addItem(id:string)
{
this.items[id] = this.items[id]?this.items[id]+1:1;
}
public removeItem(id:string)
{
this.items[id]--;
if(this.items[id] <= 0)
{
delete this.items[id];
}
}
public setItemsCount(id:string, count:number)
{
this.items[id] = count;
}
public clone():Cart
{
return new Cart(Object.assign({}, this.items));
}
}
だから、ここで私はクラスのロジックをクローニングincapsulatingよ: それは次のように見えます。
そして、私の減速に私が署名して行くだろう。そして、それらを突然変異してから戻って、普遍的な方法を経由して、単にディープクローンオブジェクトに関する
function reducer(state = new Cart(), action:Action): Cart {
//first clone, then mutate, then return
}
あるいは、実際に、どのように?そのアプローチについて何が悪いですか?
を追加しない理由:この話もhttps://www.youtube.com/watch?v=cyaAhXHhxgk
で説明したように
が代わりにそれを行うの、あなたは、
class
アクションごとに作成する必要があり、私はあなたが始めるのに役立つかもしれないngrxスターターを作りましたあなたのアクションから更新を受け取り、既存の値と更新に基づいて 'Cart'の新しいインスタンスを返す' Cart'クラスへのメソッド? – adrice727