私はこのようなコンポーネント構造を持っています
<A>
<B>
<C/>
<C/>
</B>
<D>
<E/>
<E/>
</D>
</A>
ブロック E のコンポーネントに対するアクションは、コンポーネント A の関数によって処理されて A の状態になり、B と C に props として渡されます。そのより良い方法は、Flux、pubsub-js、またはその他のストアメッセージシステムを使用することでしたが、私の理解できる限り正しいソリューションが機能しない理由を誰かが説明できることを願っています.
コンポーネント A のこの関数をコンポーネント E の複数のインスタンスから同時に呼び出すと、(各関数呼び出しが変更を提供するのではなく) 状態の変更が 1 つだけの競合状態につながります。
updateState(value,index){
this.setState(update(this.state, {
a: {
[index]: {
b: {
$set: value
}
}
}
})
);
}
ここでの関数の更新はから来ています
import update from 'react/lib/update';
ReactJS の推奨プラクティスに反する悪いソリューションですが、うまく機能します。
updateState(value,index){
this.state.a[index].b=value;
this.forceUpdate();
);
}
私の質問は:
複数の同時 setState が競合状態を呼び出すのはバグですか、それとも理解せずに何か間違ったことをしていますか?