Tôi không biết cách chính xác để tải trước dữ liệu từ API cho một thành phần để sử dụng.Cách chính xác để tải trước dữ liệu thành phần theo phản ứng + redux
Tôi đã viết một thành phần không quốc tịch mà nên làm cho dữ liệu:
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;
Và tôi có một hành động mà sẽ truy xuất dữ liệu từ 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);
};
}
Bây giờ tôi nghĩ rằng tôi có một vài tùy chọn để tải trước các bộ phận được yêu cầu cho danh sách. Tôi có thể sử dụng redux-thunk
và mapDispatchToProps
để nạp fetchDepartments vào thành phần không trạng thái và thực hiện componentWillMount
hoặc phương pháp vòng đời tương tự, để tải dữ liệu - nhưng sau đó tôi không cần phải chuyển danh sách qua đạo cụ, vì thành phần sẽ luôn tải dữ liệu cho chính mình và Tôi không muốn điều đó, bởi vì bất cứ khi nào một thành phần mới được tạo ra, dữ liệu được lấy từ api thay vì lưu trữ ...
Một lời khuyên khác mà tôi đã thấy là sử dụng chức năng getComponent
từ bộ phản ứng và truy xuất tất cả dữ liệu Tuy nhiên, trước khi trả về thành phần, tôi không chắc đó có phải là cách redux chính xác hay không, vì tôi không thấy cách sử dụng redux-thunk ở đó, và loại logic có vẻ phân tán tất cả các tập tin, khi đó chỉ là dữ liệu cần thiết một thành phần.
Điều này khiến tôi chỉ có tùy chọn tải dữ liệu trong các phương pháp vòng đời của thành phần container, nhưng tôi muốn biết điều gì được coi là thực hành tốt nhất cho những gì tôi muốn làm.
Tôi nhận ra đây là một câu hỏi cũ, nhưng tôi hy vọng ai đó vẫn sẽ trả lời. Điều này có vẻ là giải pháp cho vấn đề của tôi, nhưng tôi rõ ràng vẫn đang làm điều gì đó sai trái. this.props.getDepartments(); ném và lỗi cho tôi. Nói nó không phải là một chức năng. Tôi mới để phản ứng, phản ứng-redux, và tôi không biết làm thế nào để giải quyết điều đó. Bất kỳ trợ giúp sẽ được đánh giá cao. –
Đảm bảo rằng bạn đã ràng buộc hàm trong mapDispatchToProps và được kết nối với lưu trữ redux. Thành thật mà nói, thật khó để nói mà không nhìn vào mã bạn đã viết ... –