如何在故事书中注入 window 变量?

How to inject a window variable in a storybook?

我想将 React 组件(称为 ApplicationForm)添加到 storybook

故事书是这样写的:

import { configureStore } from '../store';

const store = configureStore();

storiesOf('application from', module)
  .addDecorator(story => <Provider store={store}>{story()} </Provider>)
  .add('all', () => (
      <ApplicationForm />
  ));

ApplicationForm是用reduxForm创建的。这就是为什么我需要在 addDecorator 函数中提供一个 store

不幸的是,在 configureStore 函数中,其中一个 reducer 依赖于全局数据 window.GLOBAL

在故事书中我会看到以下错误:

GLOBAL is not defined
ReferenceError: GLOBAL is not defined
    at initGlobalState (http://localhost:9010/static/preview.bundle.js:86625:3)

如何在故事书中注入或模拟此类全局数据?

我可以在 __stories__ 目录中添加一个 preview-head.html 文件。

里面我有 javascript 这样的:

<script>
  var data = { };
  window.GLOBAL = {
    data: data
  };  
 </script>

Documentation

您尝试访问的 window 是 iframe 预览。 尝试从 iframe 外部访问 window,Storybook window

window.parent.window.GLOBAL