feat: 在食物库页面中集成每日营养数据刷新功能,优化饮食记录成功后的用户体验;移除营养目标计算逻辑以简化组件
This commit is contained in:
@@ -3,9 +3,11 @@ import { FoodDetailModal } from '@/components/model/food/FoodDetailModal';
|
|||||||
import { HeaderBar } from '@/components/ui/HeaderBar';
|
import { HeaderBar } from '@/components/ui/HeaderBar';
|
||||||
import { Colors } from '@/constants/Colors';
|
import { Colors } from '@/constants/Colors';
|
||||||
import { DEFAULT_IMAGE_FOOD } from '@/constants/Image';
|
import { DEFAULT_IMAGE_FOOD } from '@/constants/Image';
|
||||||
|
import { useAppDispatch } from '@/hooks/redux';
|
||||||
import { useFoodLibrary, useFoodSearch } from '@/hooks/useFoodLibrary';
|
import { useFoodLibrary, useFoodSearch } from '@/hooks/useFoodLibrary';
|
||||||
import { addDietRecord, type CreateDietRecordDto } from '@/services/dietRecords';
|
import { addDietRecord, type CreateDietRecordDto } from '@/services/dietRecords';
|
||||||
import { foodLibraryApi, type CreateCustomFoodDto } from '@/services/foodLibraryApi';
|
import { foodLibraryApi, type CreateCustomFoodDto } from '@/services/foodLibraryApi';
|
||||||
|
import { fetchDailyNutritionData } from '@/store/nutritionSlice';
|
||||||
import type { FoodItem, MealType, SelectedFoodItem } from '@/types/food';
|
import type { FoodItem, MealType, SelectedFoodItem } from '@/types/food';
|
||||||
import { Ionicons } from '@expo/vector-icons';
|
import { Ionicons } from '@expo/vector-icons';
|
||||||
import { Image } from 'expo-image';
|
import { Image } from 'expo-image';
|
||||||
@@ -39,6 +41,7 @@ export default function FoodLibraryScreen() {
|
|||||||
const mealType = (params.mealType as MealType) || 'breakfast';
|
const mealType = (params.mealType as MealType) || 'breakfast';
|
||||||
|
|
||||||
// Redux hooks
|
// Redux hooks
|
||||||
|
const dispatch = useAppDispatch();
|
||||||
const { categories, loading, error, clearErrors, loadFoodLibrary } = useFoodLibrary();
|
const { categories, loading, error, clearErrors, loadFoodLibrary } = useFoodLibrary();
|
||||||
const { searchResults, searchLoading, search, clearResults } = useFoodSearch();
|
const { searchResults, searchLoading, search, clearResults } = useFoodSearch();
|
||||||
|
|
||||||
@@ -176,7 +179,11 @@ export default function FoodLibraryScreen() {
|
|||||||
await addDietRecord(dietRecordData);
|
await addDietRecord(dietRecordData);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 记录成功后清空选择列表并返回
|
// 记录成功后,刷新当天的营养数据
|
||||||
|
const today = new Date();
|
||||||
|
await dispatch(fetchDailyNutritionData(today));
|
||||||
|
|
||||||
|
// 清空选择列表并返回
|
||||||
setSelectedFoodItems([]);
|
setSelectedFoodItems([]);
|
||||||
router.back();
|
router.back();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
@@ -108,9 +108,6 @@ export function NutritionRadarCard({
|
|||||||
}: NutritionRadarCardProps) {
|
}: NutritionRadarCardProps) {
|
||||||
const [currentMealType] = useState<'breakfast' | 'lunch' | 'dinner' | 'snack'>('breakfast');
|
const [currentMealType] = useState<'breakfast' | 'lunch' | 'dinner' | 'snack'>('breakfast');
|
||||||
const [showFoodOverlay, setShowFoodOverlay] = useState(false);
|
const [showFoodOverlay, setShowFoodOverlay] = useState(false);
|
||||||
// 计算营养目标
|
|
||||||
const calorieGoal = nutritionGoals?.calories ?? 2000;
|
|
||||||
const proteinGoal = nutritionGoals?.proteinGoal ?? 50;
|
|
||||||
|
|
||||||
const nutritionStats = useMemo(() => {
|
const nutritionStats = useMemo(() => {
|
||||||
return [
|
return [
|
||||||
|
|||||||
Reference in New Issue
Block a user