1
次のコンポーネントがあり、製品のリストが表示されます。 CounterComponentはProductCatalogとProductCardの2つの場所に追加されます。これはモーダルで表示できます。注文商品の数をカウンターに表示します。 更新されたときに、これらの2つのカウンタを同期します。それぞれのカウンターの状態の変更にforceUpdateを使用することは、そのトリックを行いません。forceネストしたコンポーネントの更新
export default class ProductCatalog extends Component {
showProductCard(product){
var scope = this;
$('.ui.modal.' + product.code)
.modal({
onHide: function(){
scope.forceUpdate();
}
}).modal('show');
}
render() {
var scope = this;
return (
<div className="ui grid" id="productCatalog">
{
this.props.products.map(function(raw) {
return (
<div className="product" onClick={scope.showProductCard.bind(scope, product)}></div>
<div className="extra content">
<CounterComponent
count={scope.props.getProductCount(product)}
product={product}
onCountChanged={scope.props.onCountChanged}>
</CounterComponent>
<ProductCard
count={scope.props.getProductCount(product)}
product={product}
onCountChanged={scope.props.onCountChanged}>
</ProductCard>
</div>
);
})
}
</div>
);
}
}
CounterComponentのコードを投稿してください。通常は、 '' forceUpdate'''を使用する必要はありません。これは、新しい値を渡すときにコンポーネントを再レンダリングする必要があるためです。 IMOそれはカウンタの値が直接親の中で変化する時を知っているので、CounterComponentにonCountChangedを渡すことはちょっと奇妙です。それで、CounterComponentは、親としてそれに対処することができます。 –