Storybook中如何自定义Viewport预设但无法生效?
在Storybook配置viewport插件时遇到了问题,按文档添加了自定义预设配置,但控制面板里的选项就是不显示
我正在开发响应式组件,想添加几个移动端的viewport预设。按照官方教程在preview.js里写了:
export const parameters = {
viewport: {
viewports: {
iPhoneSE: {
name: 'iPhone SE',
styles: { width: '375px', height: '667px' }
},
// 其他设备配置...
}
}
};
然后在manager.js里通过addParameters合并配置,但控制面板的viewport下拉里还是只有默认的几个选项。控制台也没报错,这是哪里漏了吗?
正确的做法是把
viewport相关的配置放到.storybook/preview.js文件里,而不是分开写在manager.js。你的代码本身没错,但需要调整一下结构:注意这里用了
deviceViewports,这是为了保留默认设备列表的同时添加自定义设备。如果你直接覆盖viewports,原来的设备就会消失。另外确保你已经安装了
@storybook/addon-essentials或者单独安装了@storybook/addon-viewport,不然这个功能可能根本不会加载。最后重启Storybook试试,一般这样就能看到了。如果还是不行,检查下控制台或者Storybook的日志输出,说不定有隐藏的错误提示。
### 第一步:确认插件是否正确加载
首先,你得确保
@storybook/addon-viewport插件已经在你的项目里正确安装了。如果没装,先运行:接着,检查你的
.storybook/main.js文件,看看有没有正确引入这个插件。应该像这样:如果没有这一行,加上它,然后重启Storybook试试。
---
### 第二步:检查预设配置的位置
你提到把自定义的 viewport 配置写在了
preview.js里,这种方式其实是可以的,但有时候可能会被其他地方的配置覆盖掉。我们来确认一下具体位置。#### 如果用的是
preview.js你的代码写法是对的,不过需要确保没有其他地方重复定义了
parameters.viewport.viewports,或者某些地方清空了配置。另外,记得重启Storybook服务!有时候热更新可能不会生效,尤其是涉及到全局配置的时候。
如果你还是看不到自定义选项,可以尝试另一种方式——直接在
.storybook/preview.js里通过addParameters来设置:---
### 第三步:确认控制面板是否启用了 Viewport
有时候问题出在控制面板本身。你需要确保 Storybook 的控制面板(Controls)已经正确启用了 Viewport 功能。
在
.storybook/preview.js中添加以下代码,确保 Viewport 被正确注册到工具栏中:如果仍然无效,可能是 Storybook 版本的问题。试着升级到最新版本,命令如下:
---
### 第四步:调试和验证
最后,你可以通过打开浏览器控制台,输入以下代码手动检查你的配置是否生效:
如果能看到你定义的
iPhoneSE和其他设备,说明配置已经被正确加载,只是界面没显示出来。这种情况下可能是插件内部有冲突,可以尝试清理缓存或重新安装依赖。---
### 总结
按照上面的步骤走一遍,基本上问题都能解决了。如果还是不行,可能是你的 Storybook 版本过旧或者插件本身有问题。实在没办法的话,建议直接升级到最新版 Storybook,省心!
对了,别忘了每次修改完配置都要重启 Storybook 哦,不然有时候改动不会生效。开发这东西嘛,总是有点小折腾,但也挺有趣的。😄