
react 列表操作中,因 `
在 react 中,
✅ 正确做法:使用受控组件 + 清空 select 值
将
import foods from 'json/foods'; const [meal, setMeal] = useState([]); const [selectedFoodName, setSelectedFoodName] = useState(''); // ✅ 受控状态 const handleAdd = () => { if (!selectedFoodName) return; const foodToAdd = foods.find(food => food.name === selectedFoodName); if (!foodToAdd) return; // 防重:检查是否已存在同名项(推荐用 id 判断更可靠) if (meal.some(item => item.id === foodToAdd.id)) { alert(`"${foodToAdd.name}" 已在列表中`); return; } setMeal(prev => [...prev, foodToAdd]); setSelectedFoodName(''); // ✅ 添加后立即清空 select }; const handleRemove = (id) => { setMeal(prev => prev.filter(item => item.id !== id)); };
对应 jsX 更新如下:
{/* 渲染列表 */} {meal.map((item) => ({item.name}
Protein: {item.protein}
Fats: {item.fats}
Carbs: {item.carbs}
handleRemove(item.id)} /> ))}