如何在react-styleguidist

时间:2017-09-06 05:10:05

标签: javascript reactjs react-styleguidist

我想使用`react-styleguidist'在其中记录ButtonGroup组件呈现Button组件。

我有一个styleguidist webpack配置,如下所示:

module.exports = {
  module: {
    rules: [
      {
        test: /\.jsx?$/,
        use: [
          {
            loader: 'babel-loader'
          }
        ],
        exclude: /node_modules/
      }
    ]
  },
  devtool: 'cheap-module-eval-source-map'
}
  

我知道我不需要定义常用的加载器和插件,因为styleguidist已经在内部添加它们

src/components/内,允许styleguidist接收我的组件的目录结构看起来有点像这样:

 Button
   index.js
   Readme.md
   ButtonGroup
     index.js
     example.js (created for Case II after Case I failed)
     Readme.md 

案例I

Readme.md目录中的ButtonGroup

```jsx
const Button = require('../index')

<ButtonGroup>
  <Button type='primary' size='lg'>Hello, World</Button>
  <Button type='primary' size='lg'>Hello, Doctor</Button>
</ButtonGroup>
```

当我这样做时,我的styleguide会出现错误:

SyntaxError: Adjacent JSX elements must be wrapped in an enclosing tag (5:2)

案例II

我已尝试将信息封装在example.jsButtonGroup目录中,如上图所示,该文件包含:

import React from 'react'

const ButtonGroup = require('./index')
const Button = require('../index')

export default function ButtonGroupExample (props) {
  return (
    <ButtonGroup>
      <Button>Hello, World</Button>
      <Button>Hello, Doctor</Button>
    </ButtonGroup>
  )
}

现在,示例组件已导入Readme.md

```jsx
const Example = require('./example')
 (<Example />)
```

抛出错误:

TypeError: require(...) is not a function

1 个答案:

答案 0 :(得分:3)

  

我知道我不需要定义常用的加载器和插件,因为styleguidist已经在内部添加它们

事实并非如此。 Styleguidist不会在您的代码中添加任何加载器。

  

SyntaxError:相邻的JSX元素必须包装在一个封闭的标记(5:2)

;之后,您很可能需要使用分号。并且您可能不需要Button组件。这取决于您的样式指南配置以及是否要在样式指南中显示Button组件。

如果要在样式指南中显示这两个组件,请将Styleguidist指向所有组件:components: 'src/components/**/index.js'

如果要隐藏样式指南中的某些组件但能够在示例中使用它们,请启用skipComponentsWithoutExample选项并使用require选项加载组件:

// styleguide.config.js
module.exports = {
  skipComponentsWithoutExample: true,
  require: [
    path.resolve(__dirname, 'styleguide/setup.js')
  ]
}

// styleguide/setup.js
import Buttom from './src/components/Button';
global.Button = Button;
  

案例II

我不确定你在这里要做什么。