"genel hatalar" ın ness'i, addError, removeError vb. eylemlerini dinleyebilen bir errors
redüktör oluşturabilirsiniz. Daha sonra, Redux eyalet ağacına state.errors
adresinden bağlanarak uygun yerlerde görüntüleyebilirsiniz.
Buna yaklaşabileceğiniz çeşitli yollar vardır, ancak genel fikir, genel hataların/iletilerin kendi redüktörlerini <Clients />
/<AppToolbar />
'dan tamamen ayrı olarak yaşamaya hak etmeleridir. Tabii ki bu bileşenlerden herhangi birinin errors
'a erişmesi gerekiyorsa, errors
kodunu ihtiyaç duyulan her yerde bir pervane olarak kullanabilirsiniz.
Güncelleme: Mevcut hatalar varsa Kod Örneği İşte
(sizin üst seviyede <App />
içine "küresel hataları" errors
geçmek ve koşullu hale getirilmesi amacıyla olsaydın nasıl görünebileceğini bir örnektir). <App />
bileşeninizi bazı verilere bağlamak için react-redux's connect
'u kullanın. senin redüktör sadece hataların bir dizi yönetmek olabilir iken
export function fetchSomeResources() {
return dispatch => {
// Async action is starting...
dispatch({type: FETCH_RESOURCES});
someHttpClient.get('/resources')
// Async action succeeded...
.then(res => {
dispatch({type: FETCH_RESOURCES_SUCCESS, data: res.body});
})
// Async action failed...
.catch(err => {
// Dispatch specific "some resources failed" if needed...
dispatch({type: FETCH_RESOURCES_FAIL});
// Dispatch the generic "global errors" action
// This is what makes its way into state.errors
dispatch({type: ADD_ERROR, error: err});
});
};
}
yanıta göre
// App.js
// Display "global errors" when they are present
function App({errors}) {
return (
<div>
{errors &&
<UserErrors errors={errors} />
}
<AppToolbar />
<Clients />
</div>
)
}
// Hook up App to be a container (react-redux)
export default connect(
state => ({
errors: state.errors,
})
)(App);
Ve bildiğim kadarıyla aksiyon yaratıcısı söz konusu olduğunda, bu göndereceğini de (redux-thunk) başarı yetmezliği, ekleme/çıkarma uygun girişler.
function errors(state = [], action) {
switch (action.type) {
case ADD_ERROR:
return state.concat([action.error]);
case REMOVE_ERROR:
return state.filter((error, i) => i !== action.index);
default:
return state;
}
}
Yaklaşan oylar alıyorsunuzdur ve muhtemelen çok fazla örnek kod sağlamadığınız için. Sorunuz ve daha net bir şekilde açıklanırsa, aldığınız soru ve aldığınız cevaplar diğer insanlara yardımcı olacaktır. – acjay
Bu soru bağlamında eksik olduğunu/@acjay w kabul etmek zorundadır. Genel bir çözümle aşağıda (kod örnekleri ile) yanıt verdim, ancak sorunuz biraz arındırma kullanabilir. Birkaç ayrı sorununuz olabilir gibi görünüyor. 1) Eşzamansız eylemleri/hataları işleme. 2) Redux eyalet ağacınızda uygun şekilde eyalet ayırmak. 3) Bileşenlerini ihtiyaç duydukları verileri alma. – ErikTheDeveloper
@ErikTheDeveloper sayesinde, cevabın harika görünüyor. Ama haklısın, içeriği bahsetmeyi unuttum. Sorgumu düzenledim, este devstack kullanıyorum ve cevabın sizin için geçerli olmadığı anlaşılıyor. –