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

时间:2020-01-15 22:18:48

标签: reactjs react-hooks react-table storybook

我正在尝试在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似乎收到了column参数的未定义定义。 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 个答案:

答案 0 :(得分:2)

好一会儿,我知道了。这主要是数据和变量作用域的问题。

最初,我是这样做的

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的{​​{1}}中