【发布时间】:2019-04-09 10:09:11
【问题描述】:
如果将回调函数传递给组件,我希望我的 Button 组件仅处理 onClick 事件。我有两种方法,但我不知道哪种方法更好。
方法一 - 在构造函数中将handleClick与this.handleClick或false绑定,并在渲染方法中将handleClick传递给onClick。
class Button extends Component {
static propTypes = {
children: PropTypes.element.isRequired,
onClick: PropTypes.func
};
static defaultProps = {
onClick: undefined
};
constructor(props) {
super(props);
this.handleClick = (props.onClick) && this.handleClick.bind(this);
}
handleClick() {
const { onClick } = this.props;
onClick();
}
render() {
const { children } = this.props;
return (
<Wrapper onClick={this.handleClick}> // False if onClick is undefined
{children}
</Wrapper>
);
}
}
方法2 - 在构造函数中绑定handleClick,并在渲染方法中传递handleClick 或false。
class Button extends Component {
static propTypes = {
children: PropTypes.element.isRequired,
onClick: PropTypes.func
};
static defaultProps = {
onClick: undefined
};
constructor() {
super();
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
const { onClick } = this.props;
onClick();
}
render() {
const { children, onClick } = this.props;
return (
<Wrapper onClick={(onClick) && this.handleClick}>
{children}
</Wrapper>
);
}
}
【问题讨论】:
标签: javascript reactjs ecmascript-6