我正在try 使用Tailwincss和Vite创建自定义组件.在传递函数时,我收到错误消息‘unauture TypeError:pros.handleSelect is not a Function’.

const Navbar = () => {
  const handleSelect = (option) => {
    option == "Home"
      ? console.log(option)
      : option == "View Submissions"
      ? console.log(option)
      : console.log(option);
  };

  return (
    <div
      className={`bg-primary-700 flex min-h-[50px] min-w-[100vh] flex-row items-center justify-between p-[5px] text-white `}
    >
      <div
        onClick={() => {
          navigate("/home");
        }}
        className={`pl-[20px] font-semibold hover:cursor-pointer`}
      >
        MICROTEK
      </div>
      <div className={`mr-[10px] flex flex-row`}>
        <Menu2
          placeholder="Navigate"
          options={["View Submissions", "Home"]}
          onSelect={handleSelect}
        ></Menu2>
      </div>
    </div>
  );
};

对于Menu2

const Menu2 = (props) => {
  const [click, setClick] = useState(false);

  return (
    <div>
      <button
        name={props.name}
        id={props.id}
        required={props.required}
        value={props.value}
        onClick={() => {
          setClick(!click);
        }}
        onChange={props.onChange}
        className={
          `${props.className} ` +
          ` flex min-w-[100px] flex-row items-center  justify-between rounded font-semibold ${
            click ? "bg-primary-700" : "bg-none"
          } border-primary-700 hover:bg-primary-700 border-[2px] pl-[10px]`
        }
      >
        {props.placeholder}
        {click == true ? (
          <img
            src={upIcon}
            style={{ marginTop: "2px", margin: "9px" }}
            height="10px"
            width="20px"
          ></img>
        ) : (
          <img
            src={downIcon}
            style={{ marginTop: "2px", margin: "9px" }}
            height="10px"
            width="20px"
          ></img>
        )}
      </button>

      <div
        className={`${
          click == true ? "" : "hidden"
        }  animate-ease-out shadow-primary-700 absolute min-h-[40px] min-w-[100px] max-w-[200px] rounded bg-white text-black shadow-md`}
      >
        {props.options?.map((options) => {
          return (
            <div
              className="hover:bg-primary-700 p-[10px] hover:text-white "
              key={options}
              onClick={() => {
                props.handleSelect(options);
              }}
            >
              {options}
            </div>
          );
        })}
      </div>
    </div>
  );
};

export default Menu2;

我看过其他答案,他们提到使用props{handleSelect},这两种答案都不起作用.

推荐答案

按照@Clarity的建议,try 在Menu.js文件中添加一个console.log(props).

const Menu2 = (props) => {
  const [click, setClick] = useState(false);
  //this will indicate which props are getting passed
  console.log(props);  

  ...
}

目前,您的函数handleSelect接受参数作为输入.因此,请try 修改代码,如下所示:

handleSelect函数作为propsame name一起传递.

 <div className={`mr-[10px] flex flex-row`}>
    <Menu2
      placeholder="Navigate"
      options={["View Submissions", "Home"]}
      handleSelect={(option) => handleSelect(option)}
    ></Menu2>
  </div>

现在,在Menu.js内部,使用以下代码:

  {props.options?.map((options) => {
        return (
        <div
          className="hover:bg-primary-700 p-[10px] hover:text-white "
          key={options}
          onClick={() => props.handleSelect(options)}
         >
          {options}
        </div>
      );
    })}

Output

点击后,您应该会看到所选的option.现在,您可以根据您的需求添加剩余的逻辑.

enter image description here

希望这能帮上忙.

Reactjs相关问答推荐

如何使用mui为可重复使用的react 按钮应用不同的风格

使用下一步中的路由/导航不会立即加载路由

TanStack/Reaction-Query在我的Vercel应用程序中不起作用

点击页脚链接时,如何更改ReactJS导航栏中的活动菜单项(样式为Tailwind CSS)?

React-apexcharts 中的 Y 轴刻度不会动态更新符号

Javascript - 正则表达式不适用于 MAC OS - 编码?

验证 Yup 中的对象项

Reactjs:MUI5:MobileDateTimePicker API:如何自定义日历中的文本

显示我是否加入聊天应用程序时出现问题

当 React 中的状态发生变化时如何停止重新加载谷歌 map ?

条件渲染元素的测试不起作用

ReactJS 动态禁用按钮

在准备回调中使用状态属性(Redux 工具包)

MUI - ButtonGroup fullWidth 条件屏幕大小不起作用?

单元测试 useLoaderData() react-router v6 加载器函数

使用 React.lazy 调试 webpack 代码拆分

意外的标记.您可能需要一个合适的加载器来处理这种文件类型.书?.img? /*#__PURE__*/React.createElement("img",

Select 建议后如何关闭 vscode 添加自动完成={}

如何修复 Next.js 13 中类型 AppRouterInstance 上不存在 x?

useEffect 仅在跟随链接后有效,不适用于直接链接