在 StoryBook 中为 Button 添加悬停状态

Posted

技术标签:

【中文标题】在 StoryBook 中为 Button 添加悬停状态【英文标题】:Add hover state in StoryBook for Button 【发布时间】:2022-01-23 20:15:24 【问题描述】:

如何向按钮故事书功能添加悬停状态?

我可以将按钮添加到我的 Storybook 文档中,如下所示:

import ButtonClose from './ButtonClose';

const StoryMeta = 
  title: `Components/Button/ButtonClose`,
  component: ButtonClose,
;

export default StoryMeta;

const Template = (args) => <ButtonClose ...args />;

export const Default = Template.bind();

但是,我似乎不知道如何激活按钮的悬停状态,如下所示:

import React from 'react';
import  IconButton  from '@mui/material';
import SvgIcons from '../SvgIcons';

const ButtonClose = ( onClick, className ) => (
  <IconButton
    sx=
      width: '40px',
      height: '40px',
      '&:hover': 
        bgcolor: palette.primary.dark,
    
    onClick=onClick
    className=className
  >
    <SvgIcons icon="close-button" />
  </IconButton>
);

export default ButtonClose;

【问题讨论】:

这能回答你的问题吗? Mock hover state in Storybook? 不幸的是没有:(。我不知道如何在我的代码中实现这一点。 【参考方案1】:

在您的按钮中尝试 onMouseEnrer 事件 您可以定义一个布尔状态并通过 onMouseEnter 和 onMouseLeave 改变你的状态值 然后对 bgColor 使用条件操作。 例如 : const [isHover,setIsHover] = useState(false)

在按钮中:

<IconButton
   onMouseEnter=()=>setIsHover(true)
   onMouseLeave=()=>setIsHover(false)
   sx=
        width: '40px',
        height: '40px',
        bgColor:(theme)=>isHover?        theme.palette.primary.dark:theme.palette.primary.light
  
 >

【讨论】:

以上是关于在 StoryBook 中为 Button 添加悬停状态的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Storybook 中添加样式道具作为控件?

用于设置服务器 url 的 Storybook 插件

使用 @Storybook/addon-docs 显示模板的代码

在 storybook v6.4 中加载 css 模块类的问题

使用简写参数名称 $0 在 ForEach 中为 SwiftUI 添加按钮

Storybook 在 Show Code 中显示所有内容