Nie wiem, w jaki sposób wstępnie załadować dane z API dla komponentu.Prawidłowy sposób wstępnego ładowania danych komponentów w trybie reakcji + redux
Napisałem bezstanową składnik, który powinien uczynić dane:
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;
I mam działanie, które będzie retreive dane z API:
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);
};
}
Teraz myślę, że mam kilka opcje wstępnego ładowania działów wymaganych dla tej listy. Mogę użyć redux-thunk
i mapDispatchToProps
do wstrzyknięcia fetchDepartments do elementu bezstanowego i zaimplementować componentWillMount
lub podobną metodę cyklu życia, aby załadować dane - ale wtedy nie muszę przekazywać listy przez rekwizyty, ponieważ komponent zawsze ładowałby dane dla siebie, oraz Nie chcę tego, ponieważ za każdym razem, gdy tworzony jest nowy komponent, dane są pobierane z api, a nie ze sklepu ...
Kolejna porada, którą widziałem, to użycie funkcji getComponent
z routera reagującego i odzyskanie wszystkich danych przed zwróceniem komponentu nie jestem jednak pewien, czy jest to poprawny sposób redux, ponieważ nie widzę sposobu użycia redux-thunk tam, a rodzaj logiki wydaje się zaśmiecony wszystkim pośród plików, gdy są to dane wymagane tylko dla jeden składnik.
To pozostawia mi jedyną możliwą opcję ładowania danych w metodach cyklu życia komponentu kontenera, ale chcę wiedzieć, co jest uważane za najlepszą praktykę dla tego, co chcę zrobić.
Zdaję sobie sprawę, że jest to starszy pytanie, ale mam nadzieję, że ktoś będzie nadal reagować. To wydaje się być rozwiązaniem mojego problemu, ale oczywiście wciąż robię coś złego. this.props.getDepartments(); Rzuty i błąd dla mnie. Mówi, że to nie jest funkcja. Jestem nowy, aby zareagować, reagować-redux, i nie wiem, jak to rozwiązać. Każda pomoc będzie doceniona. –
Upewnij się, że funkcja jest powiązana z mapDispatchToProps i połączona ze sklepem redux. Szczerze mówiąc, trudno powiedzieć, nie patrząc na kod, który napisałeś ... –