javascript - 如何从不同的地方调用两个 onClick 事件
问题描述
我有一个按钮,它将有一个硬编码的 onClick,而另一个使用该组件的按钮可以创建他的自定义 onClick。我不相信这是重复的,因为我能够找到的所有问题都建议以硬编码的方式使用这两个 onClick,在使用 Button 组件时无法更改。
这个组件:
const Button = props => {
const { children, toggle, ...other } = props;
const [pressed, setPressed] = useState(true);
const renderPressedButton = e => {
setPressed(!pressed);
onClick(); //here onClick should be called
};
return (
<StyledButton
toggle={toggle}
pressed={toggle ? pressed : null}
onClick={toggle && renderPressedButton}
{...other}>
{children}
</StyledButton>
);
};
我也在 onClick 事件上尝试过这个功能:
const onClickHandler = () => {
renderPressedButton();
onClick();
}
并使用该组件,我将拥有我的自定义 onClick
const anotherClickHandler = () => {
console.log('Hey, this is a function outside Button component');
}
<Button onClick={anotherClickHandler}>Button</Button>
我尝试过的是从第一个 onClick 调用onClick();
内部,renderPressedButton
但它没有用。第二个 onClick( anotherClickHandler
) 被调用,但不是第一个( renderPressedButton
)。
我做错了什么?
解决方案
我找到了解决方案。
在主按钮上:
const Button = props => {
const { onClick } = props; //first i add onClick as a prop
const [pressed, setPressed] = useState(true);
const renderPressedButton = () => {
setPressed(!pressed);
if (onClick) {//then i check, if theres an onClick, execute it
onClick();
}
};
return (
<StyledButton
pressed={pressed}
{...props}
onClick={renderPressedButton}
/>
);
};
使用按钮时:
<Button onClick={justASimpleOnClickHandler}>Toggle</Button>
这样我可以在使用我的组件时拥有我的主要 onClick 功能和另一个。
推荐阅读
- java - Spring通过注释为当前用户传递参数值
- javascript - 如何在传单中启用/禁用位置监视?
- angular - GET http://localhost:4200/undefined 同时显示来自 firebase 的图像
- python - 在 Python 3.6 中从嵌套字典中过滤所需的值
- c++ - 在 QuickFIX/C++ 中将 UtcTimeOnly 转换为毫秒
- c - 符号“_creat$NOCANCEL”中的“$”是什么意思?
- java - 如何显示以特定数字开头的所有值
- localization - 使用 XLIFF 本地化 TYPO3
- swift - 如何在 webview 中打开重定向页面?
- php - 如何使用 Laravel 5.8 在电子邮件中嵌入内联图像