我试图将changeChecked作为prop从父组件传递到此子组件,以捕获输入元素id,但我遇到了这个错误.我已经提到了子组件和父组件.请帮我解决这个错误.

子组件

import { useState, useEffect } from 'react';

const CheckBox = ({ changeChecked, section }) => {


    return (
        <>
            {section.options.map((option, optionIdx) => (
                <div key={option.value} className="flex items-center">
                    <input
                        id={`filter-${section.id}-${optionIdx}`}
                        name={`${section.id}[]`}
                        defaultValue={option.value}
                        type="checkbox"
                        defaultChecked={option.checked}
                        onChange={() => changeChecked(option.id)}
                        className="h-4 w-4 border-gray-300 rounded text-indigo-600 focus:ring-indigo-500"
                        
                    />
                    <label
                        htmlFor={`filter-${section.id}-${optionIdx}`}
                        className="ml-3 lg:text-sm min-w-0 flex-1 text-gray-500"
                    >
                        {option.label}
                    </label>
                </div>
            ))}
            
        </>
    )
}

export default CheckBox;

enter image description here

父组件

import CheckBox from "../pages/collections/checkbox"
export default function App() {


const filters = [
    {
        id: 'brand',
        name: 'Brands',
        options: [
            { value: 'Casio', label: 'Casio', checked: false },
            { value: 'Yamaha', label: 'Yamaha', checked: false },
        ],
    },
]

  const onChangeChecked = (id)=>{
    console.log(id)
  }

  return (
    <div className="App">
 {filters.map((section) => (
      <CheckBox section={section} changeChecked={onChangeChecked} />
 ))}
    </div>
  );
}

推荐答案

这是将函数作为props 传递的完整示例.

在使用输入组件时,不要忘记传递props ,否则会出现与上述相同的错误.

export default function App() {

  const onHandleClick = (e)=>{
    console.log(e.target.value)
  }

  return (
    <div className="App">
      <Input  onHandleClick={onHandleClick}/>
    </div>
  );
}

function Input ({ onHandleClick }) {
  return <input onChange={(e) => onHandleClick(e)}/>
}

Node.js相关问答推荐

findoneandupdate()方法更新数据库,但其响应在请求中返回为null

控制台显示一个长对象,我可以';每当我发布更新Mongoose数据库的请求时,我都不知道错误是什么,

当变量在另一个文件中初始化时,在初始化错误之前无法访问变量

FHIR 服务器:尽管 JSON 格式正确,但在 POST 请求中接收未定义请求正文

Node js 处理回调和 Promise

在 getServerSideProps 中使用 EmailProvider 获取 NextAuth 会话会抛出 fs找不到模块

结合后端(Express)和前端(Angular)路由

我误解了外键的工作原理吗?使用续集

ResponseError:键空间ks1不存在

如何在 NestJS 中使用外部生成的 swagger.json?

Mongodb聚合传递一个匹配的数组和一个不匹配的数组

Discord.js V14 interaction.editReply 给出了一个无效的 webhook 令牌错误

FirebaseCloudMessaging : PlatformException (PlatformException(null-error, Host platform returned null value for non-null return value., null, null))

如何使用 UglifyJS 缩小文件夹中的多个 Javascript 文件?

如何使用 mocha.js 模拟用于单元测试的依赖类?

为什么 Node 控制台不显示功能代码?

需要 node-gyp 的 npm install 在 Windows 上失败

Node.js:如何附加到正在运行的进程并使用控制台调试服务器?

Node.js - 使用异步库 - 带有对象的 async.foreach

Google Firebase 错误(函数返回未定义、预期的 Promise 或值)