Reactjs/Nextjs onClick 事件不适用于外部组件

Reactjs/Nextjs onClick event not working for external component

我有一个主页,其中包含一个我创建的按钮组件,可在我的项目中重复使用。我的问题是,当我将 onClick 事件添加到我的外部组件时,点击事件不起作用,但如果我在我的主页中创建相同的按钮,点击事件就可以正常工作

按钮组件

import React from "react";
import styled from "styled-components";

const BigButton = (props): JSX.Element => {
    return <>{props.red ? <BigBtn red={props.red}>{props.val}</BigBtn> : <BigBtn>{props.val}</BigBtn>}</>;
};

export default BigButton;

const BigBtn = styled.button`
    font-style: normal;
    font-weight: 500;
    font-size: 12px;
    line-height: 15px;
    color: #f5f5f5;
    width: 78px;
    height: 30px;
    background: ${(props) => (props.red ? "#BD2129" : "#2e3034")};
    border: ${(props) => (props.red ? "initial" : "1px solid #494b4f")};
    border-radius: 2px;
    display: flex;
    align-items: center;
    justify-content: center;
`;

这适用于主页

<button onClick={buttonClose}>Close</button>

主页上的按钮组件 - 这在主页上不起作用

<BigButton val="Cancel" onClick={handleClose} />

关闭函数

const handleClose = (e) => {
        e.preventDefault();
        props.onClose();
    };

您的组件看起来不正确。您在组件和 onClick 事件中没有 button。你应该这样更新

import React from "react";
import styled from "styled-components";

const BigButton = (props): JSX.Element => {

const handleClick = () => {
            props.onClick()
    }
    return <>{props.red ? 
                    <BigBtn red={props.red}>
              <button onClick={handleClick}>
                  {props.val}
              </button>
            </BigBtn> : 
              <BigBtn>
                <button onClick={handleClick}>
                  {props.val}
                </button>
              </BigBtn>}
           </>
};

export default BigButton;

const BigBtn = styled.button`
    font-style: normal;
    font-weight: 500;
    font-size: 12px;
    line-height: 15px;
    color: #f5f5f5;
    width: 78px;
    height: 30px;
    background: ${(props) => (props.red ? "#BD2129" : "#2e3034")};
    border: ${(props) => (props.red ? "initial" : "1px solid #494b4f")};
    border-radius: 2px;
    display: flex;
    align-items: center;
    justify-content: center;
`;

您是否将 onClick 事件侦听器添加到 <BigBtn> 样式的按钮?

您的 BigButton 组件正在接收一个名为 onClick 的道具,因此您应该将其添加为一个函数,该函数会在您的样式按钮上的点击事件上触发。