redux中存储了数据,在另一个页面中获取需要先点击存储数据的页面才能获取数据?
需求:在reducer中存储了科目页面的‘subjectList’数据,需要在统计页面的下拉框进行获取使用,categorize为0时,是应收款的数据,categorize为1时,是应付款的数据。
问题:subjectList数据已经存储到了reducer中,但是每次在统计页面获取下拉框数据时,需要先点击科目页面之后,科目下拉框中才会出现数据。怎样才能够实现统计页面可以直接获取科目列表的数据呢?
页面展示:
项目代码:
因为科目页面和统计页面中都分为应付款和应收款,所以在存储数据时,就直接分开存储了,不知道这样有没有问题?
subjectList在科目页面中存储的,如果直接访问统计页面,那么不会显示科目数据。流程导致的,如果是先访问统计,获取不到数据,需要调用接口获取科目数据。
问题描述:
在redux中存储了科目页面的‘subjectList’数据,需要在统计页面的下拉框进行获取使用,但是每次在统计页面获取下拉框数据时,需要先点击科目页面之后,科目下拉框中才会出现数据。如何实现统计页面可以直接获取科目列表的数据?
解决思路:
代码实现:
import { useEffect } from 'react';
import { useDispatch } from 'react-redux';
import { setSubjectList } from './actions';
function SubjectPage() {
const dispatch = useDispatch();
useEffect(() => {
const subjectList = [
{ id: 1, name: '科目1' },
{ id: 2, name: '科目2' },
{ id: 3, name: '科目3' },
];
dispatch(setSubjectList(subjectList));
}, [dispatch]);
// ...
}
import { useSelector } from 'react-redux';
function StatisticPage() {
const subjectList = useSelector((state: any) => state.subjectList);
// ...
return (
<div>
<select>
{subjectList.map((subject: any) => (
<option key={subject.id} value={subject.id}>
{subject.name}
</option>
))}
</select>
</div>
);
}
import { useDispatch } from 'react-redux';
import { setSubjectList } from './actions';
function SubjectPage() {
const dispatch = useDispatch();
const handleAddSubject = () => {
// 添加新的科目项
const newSubjectList = [...subjectList, { id: 4, name: '科目4' }];
// 更新redux中的数据
dispatch(setSubjectList(newSubjectList));
};
// ...
}
import { useDispatch } from 'react-redux';
import { setSubjectList } from './actions';
function StatisticPage() {
const dispatch = useDispatch();
const handleDeleteSubject = (id: number) => {
// 删除指定id的科目项
const newSubjectList = subjectList.filter((subject: any) => subject.id !== id);
// 更新redux中的数据
dispatch(setSubjectList(newSubjectList));
};
// ...
}