Redux için ToDo örneğine benzer şekilde, proje yapmam benzerdir - yalnızca görüntülenecek alt öğe bileşenlerine sahip bir kapsayıcıdır. mağaza aşağıdaki gibi görünecektir:Yuvalanmış Redux akıllı bileşenleri redüktörlerle bağlama
{
workspace: {
widgets: [1, 2, 3]
}
widgets: {
1: {
id: 1,
title: 'First Widget',
lastPrice: 123.324,
lastUpdate: '2015-11-12'
},
2: {
id: 2,
title: 'Second Widget',
lastPrice: 1.624,
lastUpdate: '2015-11-12'
},
3: {
id: 3,
title: 'Third Widget',
lastPrice: 4.345,
lastUpdate: '2015-11-12'
}
}
}
her widget öğesi, kendi başına bir kompleks bileşenidir - olası eylemler, birçok özellikleri ve birçok çocuk dilsiz bileşenlerin bir sürü. Bu nedenle, her bir widget'ı, bu durum değişikliklerini ayrı tutmak için özel bir WidgetReducer'e sahip bağlı bir akıllı bileşen yaptım.
Ben WidgetReducer istediğiniz bir seferde sadece bir widget'la endişelenmek için, bu yüzden onun tarafından işlenen devlet gibi tek Widget düğümü olacaktır: Şu anda yineler yerinden
{ id: 3,
title: 'Third Widget',
lastPrice: 4.345,
lastUpdate: '2015-11-12'
}
My Çalışma Alanı bileşeni Radyo, her Araç akıllı bileşene Araç ID geçen:
@connect((state, ownProps) => ({ widget: state.widgets[ownProps.widgetId]}))
export default class Widget extends React.Component {
componentWillMount() {
this.props.dispatch(subscribeToUpdates(this.props.widgetId));
}
render() {
return (
<div>
<header>{this.props.widget.title}</header>
<div> /* Other widget stuff goes here */</div>
</div>
);
}
}
0:
@connect(state => ({ workspace: state.workspace }))
export default class Workspace extends React.Component {
render() {
return (
<div>
{this.props.workspace.widgets.map(id =>
(<Widget key={id} widgetId={id} />)
)}
</div>
);
}
}
Termometrem bileşeni çok gibidir
Her bir Widget bileşenini, yalnızca kendi Widget nesnesinde durum güncellemelerini alabilmesi için nasıl bağlayabilirim ve bağlı Widget Redüktör yalnızca bir koleksiyondan ziyade ayrı Widget nesneleriyle ilgilenir? Her şeyden
Biraz daha detaylandırır mısınız? Bir redüktör, yalnızca eylemleri almaz. Sorunuz biraz belirsiz ... İhtiyacınız olan veri dilimlerini içeren bir özelliği olan bir eylemi gönderebilirsiniz ... İstediğiniz şeyin bu olduğundan emin değilsiniz. – Seneca
Açıklığa kavuşturmaya çalıştım ... eğer hala açık değilse bana bildirin! Teşekkürler. – Marcus
@Seneca sadece bir redüktörün bir durum ve bir eylemi ele geçirip yeni bir duruma yol açan saf bir işlev olduğunu belirtmek istedi. https://github.com/rackt/redux#the-gist – Joe