【发布时间】:2021-10-15 05:42:36
【问题描述】:
我有这个:
const BillsOverviewScreen = props => {
const { navigation } = props;
const [availableBills, setAvailableBills] = useState([]);
const bills = useSelector(state => state.bills.bills);
useEffect (() => {
setAvailableBills(bills);
}, [bills]);
const dispatch = useDispatch();
useEffect(() => {
dispatch(billsActions.loadBills());
}, [dispatch]);
React.useLayoutEffect(() => {
navigation.setOptions({
headerRight: () => (
<View style={{flexDirection:'row'}}>
<SortingMenu sortBills={sortBills} />
<FilterMenu />
</View>
),
});
}, [navigation]);
function sortBills(sortBy) {
switch (sortBy) {
case 'title': {
setAvailableBills(availableBills.sort((a, b) => a.title < b.title ? -1 : (a.title > b.title ? 1 : 0)))
break;
};
case 'dateExpiry_up': {
setAvailableBills(availableBills.sort((a,b) => new Date(b.dateExpiry) - new Date(a.dateExpiry)));
break;
};
case 'dateExpiry_down': {
setAvailableBills(availableBills.sort((a,b) => new Date(a.dateExpiry) - new Date(b.dateExpiry)));
break;
};
case 'dateCreated_up': {
setAvailableBills(availableBills.sort((a,b) => new Date(b.dateCreated) - new Date(a.dateCreated)));
break;
};
case 'dateCreated_down': {
setAvailableBills(availableBills.sort((a,b) => new Date(a.dateCreated) - new Date(b.dateCreated)));
break;
};
default:
return availableBills
}
}
最初,我的 state availableBills 数组按预期填充了正确的数据,但一旦我使用我的 sortBills 函数,该数组就为空。奇怪的是,有时当我玩弄它时,它的工作原理。但是当我重置我的应用程序时,它又是空的。我真的不知道我做错了什么。尝试了不同的方法,但无法解决。
【问题讨论】:
标签: javascript reactjs react-native react-redux use-state