reactjs - 如何将所选项目添加到表 Reactjs?
问题描述
我是反应的初学者,我想从表格单元格中的选择选项中写入项目,但我不知道如何。
import React, {useState,useEffect} from 'react';
import {getMeals} from './../../../../../services/mealService';
function MakeMenuForm() {
const [meals, setMeals] = useState([]);
useEffect(() => {
const onInit = async () => {
let response = await getMeals();
setMeals(response)
console.log(response);
}
onInit();
}, [])
const [tableData, setTableData] = React.useState(meals);
const [selected, setSelected] = React.useState("");
function handleChange(event) {
setSelected(event.target.value);
let vals = event.target.value
? meals.filter(meal => meal.name === event.target.value)
: meals;
setTableData(vals);
}
return (
<form>
<label htmlFor="meal">Choose meal: </label>
<select id="meal" onChange={handleChange} >{meals.map(meal => <option value={meal.idMeal}>{meal.name}</option>)}</select> <br></br><br></br>
<table border="1" >
<thead>
<tr>
<th>Meal</th>
<th>Contect</th>
<th>Price</th>
<th>Meal type</th>
</tr>
</thead>
<tbody>
{tableData.map(meal =>(
<tr>
<td>{meal.name}</td>
<td>{meal.content}</td>
<td>{meal.price}</td>
<td>{meal.mealType}</td>
</tr>
))}
</tbody>
</table>
</form>
)
}
export default MakeMenuForm;
这是我的错误尝试:D
解决方案
在你的处理程序中,你正在做这个比较:
meals.filter(meal => meal.name === event.target.value)
您传入的值是 idMeal ( <option value={meal.idMeal}>
),因此将其更改为:
meals.filter(meal => meal.idMeal=== event.target.value)
比较 name === idMeal 几乎肯定每次都会返回 0 个结果,这就是您的表为空的原因。
推荐阅读
- python - 我应该如何在 Python 中打印特定时区的时间?
- python - 如何在 Python 中使用 JSON 对象构建列表?
- python - Discord Py 任务。不会运行任务
- python - Python 增量 int 就地 ++ vs +=
- java - 内存数据管理的最佳选择
- c - 链接器无法识别库中存在的符号
- arrays - 谷歌表格搜索并从数据库中选择
- jquery - 如何在不使用模型或 ajax 的情况下将 kendoDropdown 值和 kendoDatepicker 值从局部视图传递到另一个局部视图?
- rust - 匹配绑定和匹配解构之间的区别?
- javascript - For-loop 直到指定的输入才起作用