给ActionIcon增加Ref转发以方便控制DOM。
This commit is contained in:
parent
cb9a01109e
commit
6643eae433
|
@ -1,15 +1,16 @@
|
||||||
import { Icon, IconProps } from '@iconify/react/dist/iconify.js';
|
import { Icon, IconProps } from '@iconify/react/dist/iconify.js';
|
||||||
import cx from 'clsx';
|
import cx from 'clsx';
|
||||||
import { MouseEvent, MouseEventHandler, useCallback } from 'react';
|
import { MouseEvent, MouseEventHandler, RefObject, useCallback } from 'react';
|
||||||
import styles from './ActionIcon.module.css';
|
import styles from './ActionIcon.module.css';
|
||||||
|
|
||||||
type ActionIconProps = {
|
type ActionIconProps = {
|
||||||
icon: IconProps['icon'];
|
icon: IconProps['icon'];
|
||||||
onClick?: MouseEventHandler<HTMLButtonElement>;
|
onClick?: MouseEventHandler<HTMLButtonElement>;
|
||||||
extendClassName?: HTMLButtonElement['className'];
|
extendClassName?: HTMLButtonElement['className'];
|
||||||
|
ref: RefObject<HTMLButtonElement>;
|
||||||
};
|
};
|
||||||
|
|
||||||
export function ActionIcon({ icon, onClick, extendClassName }: ActionIconProps) {
|
export function ActionIcon({ icon, onClick, extendClassName, ref }: ActionIconProps) {
|
||||||
const handleClick = useCallback(
|
const handleClick = useCallback(
|
||||||
(event: MouseEvent<HTMLButtonElement>) => {
|
(event: MouseEvent<HTMLButtonElement>) => {
|
||||||
onClick?.(event);
|
onClick?.(event);
|
||||||
|
@ -18,7 +19,11 @@ export function ActionIcon({ icon, onClick, extendClassName }: ActionIconProps)
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<button type="button" onClick={handleClick} className={cx(styles.action_icon, extendClassName)}>
|
<button
|
||||||
|
type="button"
|
||||||
|
onClick={handleClick}
|
||||||
|
className={cx(styles.action_icon, extendClassName)}
|
||||||
|
ref={ref}>
|
||||||
<Icon icon={icon} className={styles.icon} />
|
<Icon icon={icon} className={styles.icon} />
|
||||||
</button>
|
</button>
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user