You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为@storybook/react-native配置全局装饰器

@storybook/react-native 全局装饰器配置方案

React Native 版 Storybook 提供了和web端对齐的全局配置能力,两种实现方案如下:

方案1:入口文件直接配置(兼容所有版本)

直接在Storybook入口文件调用全局addDecorator方法,所有故事都会自动应用该装饰器,无需单独配置每个故事:

  • 找到项目中的Storybook入口文件,默认路径为.storybook/index.js(部分旧版本项目可能放在根目录storybook/index.js)
  • 引入ThemeProvider后添加全局装饰器即可,示例代码如下:
// .storybook/index.js
import { AppRegistry } from 'react-native';
import { getStorybookUI, configure, addDecorator } from '@storybook/react-native';
// 替换为你项目中ThemeProvider的实际路径
import ThemeProvider from '../src/config/ThemeProvider';
import './rn-addons';

// 全局注册ThemeProvider装饰器
addDecorator(StoryComponent => (
  <ThemeProvider>
    <StoryComponent />
  </ThemeProvider>
));

// 原有故事加载逻辑保持不变
configure(() => {
  require('./stories');
}, module);

const StorybookUI = getStorybookUI({});
AppRegistry.registerComponent('YourAppName', () => StorybookUI);
export default StorybookUI;

方案2:preview.js配置(适用6.x及以上版本)

6.x以上版本的@storybook/react-native已经支持和web端一致的preview.js全局配置方式:

  • 在.storybook目录下新建preview.js文件
  • 导出decorators数组配置全局装饰器,示例代码如下:
// .storybook/preview.js
// 替换为你项目中ThemeProvider的实际路径
import ThemeProvider from '../src/config/ThemeProvider';

export const decorators = [
  StoryComponent => (
    <ThemeProvider>
      <StoryComponent />
    </ThemeProvider>
  )
];

两种方案均会自动对所有故事生效,无需再单独给每个故事调用addDecorator方法。

内容的提问来源于stack exchange,提问作者Cristian Flórez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 09:24:05