使用 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
/>
)
)
)
但是,dummyData
在React.createElement
中未定义,所以我选择这样做:
table.addDecorator(withKnobs).add('NextTable', () =>
React.createElement(() =>
return (
<MockTableComponent />
)
)
)
模拟数据和模拟列在MockTableComponent
中被记忆,它正在呈现<Table />
【讨论】:
以上是关于使用 Storybook 进行 React-table[v7] 渲染的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:使用 React、Storybook 和 Storyshots 插件进行快照测试时,提供的值不是“元素”类型
使用 Enzyme 进行 Storybook JS 集成测试 - 状态更改被覆盖
Angular Storybook - WebpackOptionsValidationError:Webpack 已使用与 API 模式不匹配的配置对象进行初始化