使用 Storybook 进行 React-table[v7] 渲染

Posted

技术标签:

【中文标题】使用 Storybook 进行 React-table[v7] 渲染【英文标题】:React-table[v7] rendering with Storybook 【发布时间】:2020-05-02 17:58:15 【问题描述】:

我正在尝试在 Storybook https://storybook.js.org/ 中呈现 react-table 组件

Error: Uncaught TypeError: Cannot read property 'map' of undefined
at decorateColumnTree (vendors~main.4c20d65610ba8d62ac56.bundle.js:210768)
at vendors~main.4c20d65610ba8d62ac56.bundle.js:211338
at mountMemo (vendors~main.4c20d65610ba8d62ac56.bundle.js:186644)
at Object.useMemo (vendors~main.4c20d65610ba8d62ac56.bundle.js:186866)
at Object.useMemo (vendors~main.4c20d65610ba8d62ac56.bundle.js:217699)
at useTable (vendors~main.4c20d65610ba8d62ac56.bundle.js:211337)
at Table (main.4c20d65610ba8d62ac56.bundle.js:17507)
at renderWithHooks (vendors~main.4c20d65610ba8d62ac56.bundle.js:186083)
at mountIndeterminateComponent (vendors~main.4c20d65610ba8d62ac56.bundle.js:188317)
at beginWork$1 (vendors~main.4c20d65610ba8d62ac56.bundle.js:189461)

根据错误的罪魁祸首,decorateColumnTree 似乎正在接收未定义的列参数。 https://github.com/tannerlinsley/react-table/blob/1d8ffb18f7afc862db5d4f1da5cfc6781ed10553/src/hooks/useTable.js#L166-L169

storybook version: ^5.1.9

react-table version: ^7.0.0-rf.15

【问题讨论】:

【参考方案1】:

好吧,过了一段时间,我想通了。这主要是数据和变量范围的问题。

最初,我是这样做的

import dummyData from './mockData'

table.addDecorator(withKnobs).add('Table', () =>
  React.createElement(() => 
    return (
      <Table
        columns=dummyData.columns
        data=dummyData.data
      />
    )
  )
)

但是,dummyDataReact.createElement 中未定义,所以我选择这样做:

table.addDecorator(withKnobs).add('NextTable', () =>
  React.createElement(() => 
    return (
      <MockTableComponent />
    )
  )
)

模拟数据和模拟列在MockTableComponent 中被记忆,它正在呈现&lt;Table /&gt;

【讨论】:

以上是关于使用 Storybook 进行 React-table[v7] 渲染的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:使用 React、Storybook 和 Storyshots 插件进行快照测试时,提供的值不是“元素”类型

使用 Enzyme 进行 Storybook JS 集成测试 - 状态更改被覆盖

Storybook 仅在我进行更改时加载故事

Angular Storybook - WebpackOptionsValidationError:Webpack 已使用与 API 模式不匹配的配置对象进行初始化

来自 Storybook 的模拟 api 调用

如何在 Storybook 上实时编辑类/功能组件