我试图将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相关问答推荐

意外标识符断言Shopify Remix应用程序

在child_Process中持久运行SSH命令

如何在ejs模板中使用循环显示多个结果?

如何在医学中按patientId查找一个并同时插入多个数据

为什么即使数据库确实更新了,此 POST 也无法解析并返回 200 代码?

无法从 mongoDB 访问数据?

Typescript :泛型类又扩展了另一个泛型类

Indexeddb 获取所有不同于特定值的记录

登录用户并获取他们的个人资料

Mocha调用所有it回调模拟(测试中间件)

(Mongoose) 删除 TTL 字段失败

用户通过 oauth2 twitter 授权或通过Passport discord后如何重定向到 React/Vue 路由?

yarn.lock 和 npm 的 package-lock 有什么区别?

node.js 是否支持yields ?

Dart 语言比 JavaScript (Node.js) 有什么好处

如何使用 gulp-uglify 缩小 ES6 函数?

npm package.json 操作系统特定脚本

tsconfig.json 中模块类型的区别

nodejs - 如何读取和输出 jpg 图像?

未在 Windows 8.1 上构建的 node 包 - 缺少 Microsoft.Cpp.Default.props