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

时间:2018-06-21 12:28:08

标签: reactjs redux 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创建的。这就是为什么我需要在store函数中提供addDecorator

不幸的是,在configureStore函数中,约化器之一具有全局数据window.GLOBAL的依赖性。

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

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

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

2 个答案:

答案 0 :(得分:5)

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

里面有这样的javascript:

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

Documentation

答案 1 :(得分:1)

您要访问的window是iframe预览。 尝试从iframe外的故事书window访问窗口。

window.parent.window.GLOBAL