我有这个错误,我上周开始学习react ,所以我无法解决这个问题.

Uncaught TypeError: contacts is not iterable
    at onSubmit (index.js:15:1)

触点组件

import List from "./List"
import Form from "./Form"
import {useState,useEffect} from "react"
import React  from "react"

function Contacts(){

    const [contacts,setContacts] = useState([]);

    useEffect(()=>{
        console.log(contacts)
    },[contacts])   

    return (
        <div>
            <List/>
            <Form addContact = {setContacts} contacts={contacts}/>
        </div>
    )
}


export default Contacts

表单组件

import React from "react"
import { useState } from "react"

function Form(addContact,contacts){
    
    const [form,setForm] = useState({fullName : "" , phoneNumber : ""})

    const onChangeInput = (event) => { setForm({...form,[event.target.name]: event.target.value}) }

    const onSubmit = (event) => {
        event.preventDefault();
        if(form.name ==="" || form.phoneNumber===""){
            return false
        }
        addContact([...contacts , form]);
    }

    return (
        <form onSubmit={onSubmit}>
            Form List
            <div><input name="fullName" placeholder="fullName" onChange={onChangeInput}></input></div>
            <div><input name="phoneNumber" placeholder="phoneNumber" onChange={onChangeInput}></input></div>
            
            <div>
                <button>Add</button>
            </div>
        </form>
    )
}


export default Form

推荐答案

请使用这样的props

function Form({ addContact, contacts }){
...
...
...
}

Javascript相关问答推荐

除了在Angular 16中使用快照之外,什么是可行且更灵活的替代方案?

如果没有尾随斜线,托管在收件箱中的React/Vite将无法工作

橡皮擦完全让画布变成白色

添加/删除时React图像上传重新渲染上传的图像

如何从JSON数组添加Google Maps标记—或者如何为数组添加参数到标记构造器

网页自检测外部元素无法加载

从WooCommerce Checkout Country字段重新排序国家,保持国家同步

google docs boldText直到按行执行应用脚本错误

当作为表达式调用时,如何解析方法decorator 的签名?

给定一个凸多边形作为一组边,如何根据到最近边的距离填充里面的区域

数字时钟在JavaScript中不动态更新

为什么按钮会随浮动属性一起移动?

如何使用基于promise (非事件emits 器)的方法来传输数据?

当代码另有说明时,随机放置的圆圈有时会从画布上消失

如何防止ionic 输入中的特殊字符.?

WebSocketException:远程方在未完成关闭握手的情况下关闭了WebSocket连接.&#三十九岁;

如何在Java脚本中对数据进行签名,并在PHP中验证签名?

本地损坏的Java脚本

如何压缩图像并将其编码为文本?

设置复选框根据选中状态输入选中值