Kullanılacak bir bileşen için API'dan verileri ön yükleme yönteminin doğru yolunu bilmiyorum.Reaks + redux'da bileşen verilerini ön yükleme için doğru yol
Ben verileri işlemek gereken bir vatansız bileşeni yazdım:
import React, { PropTypes } from 'react';
const DepartmentsList = ({ departments }) => {
const listItems = departments.map((department) => (
<li><a href="./{department}">{department.title}</a></li>
));
return (
<ul>
{listItems}
</ul>
);
};
DepartmentsList.propTypes = {
departments: PropTypes.array.isRequired
};
export default DepartmentsList;
Ve API verileri Retreive edecek bir eylem vardır:
import { getDepartments } from '../api/timetable';
export const REQUEST_DEPARTMENTS = 'REQUEST_DEPARTMENTS';
export const RECEIVE_DEPARTMENTS = 'RECEIVE_DEPARTMENTS';
const requestDepartments =() => ({ type: REQUEST_DEPARTMENTS });
const receiveDepartments = (departments) => ({ type: RECEIVE_DEPARTMENTS, departments });
export function fetchDepartments() {
return dispatch => {
dispatch(requestDepartments);
getDepartments()
.then(departments => dispatch(
receiveDepartments(departments)
))
.catch(console.log);
};
}
Şimdi ben birkaç var Liste için gereken bölümleri ön yükleme seçenekleri. Verilerin yüklenememesi için redux-thunk
ve mapDispatchToProps
ve mapDispatchToProps
kullanabilir ve veri yüklemek için componentWillMount
veya benzeri yaşam döngüsü yöntemini uygulayabilirim - ancak bileşen her zaman kendisi için veri yükleyeceğinden, listeyi sahne aracılığıyla geçmem gerekir ve Bunu istemiyorum, çünkü yeni bir bileşen oluşturulduğunda, veri depo yerine api'den getirilir ...
Gördüğüm başka bir tavsiye, tepki veren yönlendiriciden getComponent
işlevini kullanmak ve tüm verileri geri almaktır. Bununla birlikte, bileşeni geri göndermeden önce, doğru redux yolu olup olmadığından emin değilim, çünkü burada redux-thunk'u nasıl kullanacağımı görmüyorum, ve mantıksal bir çeşit, tüm dosyaları bir araya getirdiğinde, sadece veri için gerekli olduğunda bir bileşen.
Bu, kapsayıcı bileşeninin yaşam döngüsü yöntemlerine veri yüklemek için yalnızca görünen tek seçenekle beni terk ediyor, ancak ne yapmak istediğimin en iyi uygulamasının ne olduğunu bilmek istiyorum.
Bu eski bir sorudur farkındayım ama birileri hala cevap verecektir umarım. Bu benim sorunumun çözümü gibi görünüyor, ama açıkçası hala yanlış bir şeyler yapıyorum. this.props.getDepartments(); benim için atar ve hata verir. Bunun bir işlev olmadığını söylüyor. Tepki vermek için yeniyim, tepki-redux ve bunu nasıl çözeceğimi bilmiyorum. Herhangi bir yardım takdir edilecektir. –
İşlevi mapDispatchToProps içinde bağladığınızdan emin olun ve yeniden mağazaya bağlı olun. Dürüst olmak gerekirse, yazdığınız koda bakmadan söylemek zor ... –