【发布时间】:2020-03-08 23:33:28
【问题描述】:
我制作了一个自定义的Button 组件,它返回 HTML button。现在我在Link 中使用这个Button 来自next-routes。问题是它不能以这种方式工作。奇怪的是,如果我在Link 中使用 HTML button,则该按钮可以正常工作。但是,两个按钮都以完全相同的方式在 DOM 中呈现。以下是代码:
// Button.js
import React from "react";
import classNames from "classnames";
const Button = ({
children,
newClass = "",
onClickHandler = () => { },
isSubmitting = false,
inlineBtn = true,
disabled,
primary,
secondary,
basic,
notCentered = true,
shaded,
miniLoader,
type = "button",
isTransparent,
fontClass = "",
small
}) => {
return (
<React.Fragment>
<button
className={classNames(
`${isTransparent ? 'btn-transparent' : 'btn'} ${fontClass} ${newClass}`,
{
"btn-block": !inlineBtn,
"col-mx-auto": !notCentered,
"btn-primary": primary,
"btn-secondary": secondary,
"btn-basic": basic,
shaded: shaded,
loading: isSubmitting,
"loading-sm": miniLoader,
"btn-sm": small
}
)}
disabled={disabled}
type={type}
onClick={onClickHandler}
>
<span>{children}</span>
</button>
</React.Fragment>
);
};
export { Button };
以下不起作用:
<Link route="/register/location">
<Button basic small>
Sign Up
</Button>
</Link>
以下工作正常:
<Link route="/register/location">
<button className="btn btn-basic btn-sm" type="button" onClick={() => { }}>
<span>Sign Up</span>
</button>
</Link>
【问题讨论】:
标签: reactjs button react-router next.js