我在我的项目中使用 Reactstrap 进行 Bootstrap 集成。但是,我还需要使用 Reactstrap 扩展开箱即用onClick
的组件的行为。Button
为此,我制作了一个自定义NanoButton
组件来重构默认组件。这就是我所说的:
<NanoButton type="button" onClick={() => Router.push('/about')}>About</NanoButton>
NanoButton
正如我所说,该组件将我的自定义onClick
功能添加到现有Button
类中:
import { Component } from 'react';
import { Button } from 'reactstrap';
class NanoButton extends Component {
constructor(props) {
super(props);
this.onClick = this.onClick.bind(this);
}
onClick(e) {
var circle = document.createElement('div');
e.target.appendChild(circle);
var d = Math.max(e.target.clientWidth, e.target.clientHeight);
circle.style.width = circle.style.height = d + 'px';
var rect = e.target.getBoundingClientRect();
circle.style.left = e.clientX - rect.left -d/2 + 'px';
circle.style.top = e.clientY - rect.top - d/2 + 'px';
circle.classList.add('ripple');
this.props.onClick();
}
render() {
return (
<Button
className={this.props.className}
type={this.props.type}
color={this.props.color}
size={this.props.size}
onClick={this.onClick}
>
{this.props.children}
</Button>
);
}
}
export default NanoButton;
如您所见,在最终执行作为道具传递给它NanoButton
的函数之前,我需要组件执行一些自定义活动。onClick
但是在浏览器中加载时,它无法this.props.onClick();
说它无法读取onClick on undefined
?我在这里能错过什么?