微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将所选项目添加到表Reactjs中?

如何解决如何将所选项目添加到表Reactjs中?

我是React的初学者,我想从表单元格的select选项中写入项目,但我不知道如何。

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

enter image description here

解决方法

在处理程序中,您正在进行以下比较:

meals.filter(meal => meal.name === event.target.value)

您传递的值是idMeal(<option value={meal.idMeal}>),因此将其更改为:

meals.filter(meal => meal.idMeal=== event.target.value)

比较名称=== idMeal几乎肯定每次都会返回0个结果,这就是表为空的原因。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。