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
的道具,因此您应该将其添加为一个函数,该函数会在您的样式按钮上的点击事件上触发。
我有一个主页,其中包含一个我创建的按钮组件,可在我的项目中重复使用。我的问题是,当我将 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
的道具,因此您应该将其添加为一个函数,该函数会在您的样式按钮上的点击事件上触发。