NextJS -作为prop传递的函数未调用onClick

baubqpgj  于 2023-11-18  发布在  其他
关注(0)|答案(1)|浏览(91)

日安。我已经创建了一个NextJS应用程序,在应用程序页面中,我调用了一个我创建的名为ButtonComponent的组件。该组件有一个名为“buttonClick”的prop,它被传递到组件内部的onClick处理程序中。然后,我将一个带有控制台日志的函数从应用程序页面传递到ButtonComponent作为prop。然而,在单击按钮时,应用程序页面的控制台日志未显示。
注意-我已经在ButtonComponent中的另一个函数中传递了该函数,以确保onClick被触发。代码如下。

应用页面

import React from "react";

import "./homePage.css";

import ButtonComponent from "@/Components/ButtonComponent/ButtonComponent";

const Home = () => {
  const buttonClick = async () => {
    "use server";
    console.log("Function from the App Page");
  };

  return (
    <main className="homepage">
      <div>
        <ButtonComponent
          className={"sales-button"}
          label={"Sales"}
          buttonClick={buttonClick}
        />
      </div>
    </main>
  );
};

export default Home;

字符串

按钮组件

"use client";
import React from "react";

import "./buttonComponent.css";

const ButtonComponent = ({
  label = "Button",
  buttonClick,
  className = "button",
}: any) => {
  const handleClick = () => {
    console.log("Check to see if onClick is triggering");
    buttonClick();
  };
  return (
    <button className={className} onClick={handleClick}>
      {label}
    </button>
  );
};

export default ButtonComponent;


我是NextJS的新手,我查找的文档或问题都没有显示出这个特定问题的解决方案。
我确实尝试过传递一个数组,看看是否有props被传递,很明显,它们被传递了。只是函数没有被触发。

l7wslrjt

l7wslrjt1#

这个问题似乎是在ButtonComponent中,在ButtonClick函数中,你本想调用buttonClick函数,但实际上,你只是引用了它而没有调用它。要调用这个函数,你需要在函数名后面加上括号。理想情况下,句柄click函数应该是这样的:

const handleClick = () => {
    console.log("Check to see if onClick is triggering");
    buttonClick();
    };

字符串

相关问题