import React from 'react'; import makeMarkdownRenderer from './MdRenderer'; import {flattenTree, filterTree, mapTree} from '../../src/utils/helper'; export const docs = [ { // prefix: ({classnames: cx}) =>
  • , label: '📌 开始', children: [ { label: '介绍', path: '/docs/index', getComponent: (location, cb) => require(['../../docs/index.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: '快速开始', path: '/docs/start/getting-started', getComponent: (location, cb) => require(['../../docs/start/getting-started.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: '自定义', path: '/docs/start/custom', getComponent: (location, cb) => require(['../../docs/start/custom.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) } // { // label: '基本用法', // icon: 'fa fa-file', // path: '/docs/basic', // getComponent: (location, cb) => // require(['../../docs/basic.md'], doc => { // cb(null, makeMarkdownRenderer(doc)); // }) // }, // { // label: '高级用法', // icon: 'fa fa-rocket', // path: '/docs/advanced', // getComponent: (location, cb) => // require(['../../docs/advanced.md'], doc => { // cb(null, makeMarkdownRenderer(doc)); // }) // } ] }, { label: '💡 概念', children: [ { label: '配置与组件', path: '/docs/concepts/schema', getComponent: (location, cb) => require(['../../docs/concepts/schema.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: '数据域与数据链', path: '/docs/concepts/datascope-and-datachain', getComponent: (location, cb) => require(['../../docs/concepts/datascope-and-datachain.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: '模板', path: '/docs/concepts/template', getComponent: (location, cb) => require(['../../docs/concepts/template.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: '数据映射', path: '/docs/concepts/data-mapping', getComponent: (location, cb) => require(['../../docs/concepts/data-mapping.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: '表达式', path: '/docs/concepts/expression', getComponent: (location, cb) => require(['../../docs/concepts/expression.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: '联动', path: '/docs/concepts/linkage', getComponent: (location, cb) => require(['../../docs/concepts/linkage.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: '行为', path: '/docs/concepts/action', getComponent: (location, cb) => require(['../../docs/concepts/action.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: '样式', path: '/docs/concepts/style', getComponent: (location, cb) => require(['../../docs/concepts/style.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) } ] }, { label: '🎼 类型', children: [ { label: 'SchemaNode', path: '/docs/types/schemanode', getComponent: (location, cb) => require(['../../docs/types/schemanode.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'API', path: '/docs/types/api', getComponent: (location, cb) => require(['../../docs/types/api.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) } ] }, { label: '⚙ 组件', children: [ { label: '组件介绍', path: '/docs/components/component', getComponent: (location, cb) => require(['../../docs/components/component.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Page 页面', path: '/docs/components/page', getComponent: (location, cb) => require(['../../docs/components/page.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Form 表单', // path: '/docs/components/form/index', // getComponent: (location, cb) => // require(['../../docs/components/form/index.md'], doc => { // cb(null, makeMarkdownRenderer(doc)); // }), children: [ // @todo 完了想办法把这个放上面,暂时先这样 { label: 'Form 表单', path: '/docs/components/form/index', getComponent: (location, cb) => require(['../../docs/components/form/index.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'FormItem 表单项', path: '/docs/components/form/formitem', getComponent: (location, cb) => require(['../../docs/components/form/formitem.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Options 选择器表单项', path: '/docs/components/form/options', getComponent: (location, cb) => require(['../../docs/components/form/options.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Array 数组输入框', path: '/docs/components/form/array', getComponent: (location, cb) => require(['../../docs/components/form/array.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Button 按钮', path: '/docs/components/form/button', getComponent: (location, cb) => require(['../../docs/components/form/button.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Button-Toolbar 按钮工具栏', path: '/docs/components/form/button-toolbar', getComponent: (location, cb) => require(['../../docs/components/form/button-toolbar.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Button-Group 按钮集合', path: '/docs/components/form/button-group', getComponent: (location, cb) => require(['../../docs/components/form/button-group.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Chain-Select 链式下拉框', path: '/docs/components/form/chain-select', getComponent: (location, cb) => require(['../../docs/components/form/chain-select.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Checkbox 勾选框', path: '/docs/components/form/checkbox', getComponent: (location, cb) => require(['../../docs/components/form/checkbox.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Checkboxes 复选框', path: '/docs/components/form/checkboxes', getComponent: (location, cb) => require(['../../docs/components/form/checkboxes.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'City 城市选择器', path: '/docs/components/form/city', getComponent: (location, cb) => require(['../../docs/components/form/city.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Color 颜色选择器', path: '/docs/components/form/color', getComponent: (location, cb) => require(['../../docs/components/form/color.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Combo 组合', path: '/docs/components/form/combo', getComponent: (location, cb) => require(['../../docs/components/form/combo.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Date 日期选择器', path: '/docs/components/form/date', getComponent: (location, cb) => require(['../../docs/components/form/date.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Datetime 日期时间选择器', path: '/docs/components/form/datetime', getComponent: (location, cb) => require(['../../docs/components/form/datetime.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Date-Range 日期范围选择器', path: '/docs/components/form/date-range', getComponent: (location, cb) => require(['../../docs/components/form/date-range.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Datetime-Range 日期时间范围', path: '/docs/components/form/datetime-range', getComponent: (location, cb) => require(['../../docs/components/form/datetime-range.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'DiffEditor 对比编辑器', path: '/docs/components/form/diff-editor', getComponent: (location, cb) => require(['../../docs/components/form/diff-editor.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Editor 编辑器', path: '/docs/components/form/editor', getComponent: (location, cb) => require(['../../docs/components/form/editor.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'FieldSet 表单项集合', path: '/docs/components/form/fieldset', getComponent: (location, cb) => require(['../../docs/components/form/fieldset.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'File 文件上传', path: '/docs/components/form/file', getComponent: (location, cb) => require(['../../docs/components/form/file.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Formula 公式', path: '/docs/components/form/formula', getComponent: (location, cb) => require(['../../docs/components/form/formula.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Grid 网格', path: '/docs/components/form/grid', getComponent: (location, cb) => require(['../../docs/components/form/grid.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Group 表单项组', path: '/docs/components/form/group', getComponent: (location, cb) => require(['../../docs/components/form/group.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'HBox', path: '/docs/components/form/hbox', getComponent: (location, cb) => require(['../../docs/components/form/hbox.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Hidden 隐藏字段', path: '/docs/components/form/hidden', getComponent: (location, cb) => require(['../../docs/components/form/hidden.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Image 图片', path: '/docs/components/form/image', getComponent: (location, cb) => require(['../../docs/components/form/image.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Input-Group 输入框组合', path: '/docs/components/form/input-group', getComponent: (location, cb) => require(['../../docs/components/form/input-group.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'List 列表', path: '/docs/components/form/list', getComponent: (location, cb) => require(['../../docs/components/form/list.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Matrix 矩阵', path: '/docs/components/form/matrix', getComponent: (location, cb) => require(['../../docs/components/form/matrix.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'NestedSelect 级联选择器', path: '/docs/components/form/nestedselect', getComponent: (location, cb) => require(['../../docs/components/form/nestedselect.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Number 数字输入框', path: '/docs/components/form/number', getComponent: (location, cb) => require(['../../docs/components/form/number.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Panel 面板', path: '/docs/components/form/panel', getComponent: (location, cb) => require(['../../docs/components/form/panel.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Picker 列表选择器', path: '/docs/components/form/picker', getComponent: (location, cb) => require(['../../docs/components/form/picker.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Radios 单选框', path: '/docs/components/form/radios', getComponent: (location, cb) => require(['../../docs/components/form/radios.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Rating 评分', path: '/docs/components/form/rating', getComponent: (location, cb) => require(['../../docs/components/form/rating.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Range 滑块', path: '/docs/components/form/range', getComponent: (location, cb) => require(['../../docs/components/form/range.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Repeat 重复频率选择器', path: '/docs/components/form/repeat', getComponent: (location, cb) => require(['../../docs/components/form/repeat.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Rich-Text 富文本编辑器', path: '/docs/components/form/rich-text', getComponent: (location, cb) => require(['../../docs/components/form/rich-text.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Select 选择器', path: '/docs/components/form/select', getComponent: (location, cb) => require(['../../docs/components/form/select.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Service 功能容器', path: '/docs/components/form/service', getComponent: (location, cb) => require(['../../docs/components/form/service.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'SubForm 子表单', path: '/docs/components/form/subform', getComponent: (location, cb) => require(['../../docs/components/form/subform.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Switch 开关', path: '/docs/components/form/switch', getComponent: (location, cb) => require(['../../docs/components/form/switch.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Static 静态展示', path: '/docs/components/form/static', getComponent: (location, cb) => require(['../../docs/components/form/static.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Tabs 选项卡', path: '/docs/components/form/tabs', getComponent: (location, cb) => require(['../../docs/components/form/tabs.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Table 表格', path: '/docs/components/form/table', getComponent: (location, cb) => require(['../../docs/components/form/table.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Tag 标签选择器', path: '/docs/components/form/tag', getComponent: (location, cb) => require(['../../docs/components/form/tag.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Text 输入框', path: '/docs/components/form/text', getComponent: (location, cb) => require(['../../docs/components/form/text.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Textarea 多行输入框', path: '/docs/components/form/textarea', getComponent: (location, cb) => require(['../../docs/components/form/textarea.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Time 时间', path: '/docs/components/form/time', getComponent: (location, cb) => require(['../../docs/components/form/time.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Transfer 穿梭器', path: '/docs/components/form/transfer', getComponent: (location, cb) => require(['../../docs/components/form/transfer.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'TabsTransfer 组合穿梭器', path: '/docs/components/form/tabs-transfer', getComponent: (location, cb) => require(['../../docs/components/form/tabs-transfer.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Tree 树形选择框', path: '/docs/components/form/tree', getComponent: (location, cb) => require(['../../docs/components/form/tree.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'TreeSelect 树形选择器', path: '/docs/components/form/treeselect', getComponent: (location, cb) => require(['../../docs/components/form/treeselect.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) } ] }, { label: 'CRUD 增删改查', path: '/docs/components/crud', getComponent: (location, cb) => require(['../../docs/components/crud.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Action 行为按钮', path: '/docs/components/action', getComponent: (location, cb) => require(['../../docs/components/action.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Alert 提示', path: '/docs/components/alert', getComponent: (location, cb) => require(['../../docs/components/alert.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Audio 音频', path: '/docs/components/audio', getComponent: (location, cb) => require(['../../docs/components/audio.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Button 按钮', path: '/docs/components/button', getComponent: (location, cb) => require(['../../docs/components/button.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'ButtonGroup 按钮组', path: '/docs/components/button-group', getComponent: (location, cb) => require(['../../docs/components/button-group.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Card 卡片', path: '/docs/components/card', getComponent: (location, cb) => require(['../../docs/components/card.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Cards 卡片组', path: '/docs/components/cards', getComponent: (location, cb) => require(['../../docs/components/cards.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Carousel 轮播图', path: '/docs/components/carousel', getComponent: (location, cb) => require(['../../docs/components/carousel.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Chart 图表', path: '/docs/components/chart', getComponent: (location, cb) => require(['../../docs/components/chart.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Collapse 折叠器', path: '/docs/components/collapse', getComponent: (location, cb) => require(['../../docs/components/collapse.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Color 颜色', path: '/docs/components/color', getComponent: (location, cb) => require(['../../docs/components/color.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Container 容器', path: '/docs/components/container', getComponent: (location, cb) => require(['../../docs/components/container.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Date 日期时间', path: '/docs/components/date', getComponent: (location, cb) => require(['../../docs/components/date.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Dialog 对话框', path: '/docs/components/dialog', getComponent: (location, cb) => require(['../../docs/components/dialog.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Divider 分割线', path: '/docs/components/divider', getComponent: (location, cb) => require(['../../docs/components/divider.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Drawer 抽屉', path: '/docs/components/drawer', getComponent: (location, cb) => require(['../../docs/components/drawer.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'DropDownButton', path: '/docs/components/dropdown-button', getComponent: (location, cb) => require(['../../docs/components/dropdown-button.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Each 循环渲染器', path: '/docs/components/each', getComponent: (location, cb) => require(['../../docs/components/each.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Grid 网格布局', path: '/docs/components/grid', getComponent: (location, cb) => require(['../../docs/components/grid.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'HBox 布局', path: '/docs/components/hbox', getComponent: (location, cb) => require(['../../docs/components/hbox.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Html', path: '/docs/components/html', getComponent: (location, cb) => require(['../../docs/components/html.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Icon 图标', path: '/docs/components/icon', getComponent: (location, cb) => require(['../../docs/components/icon.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'iFrame', path: '/docs/components/iframe', getComponent: (location, cb) => require(['../../docs/components/iframe.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Image 图片', path: '/docs/components/image', getComponent: (location, cb) => require(['../../docs/components/image.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Images 图片集', path: '/docs/components/images', getComponent: (location, cb) => require(['../../docs/components/images.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Json', path: '/docs/components/json', getComponent: (location, cb) => require(['../../docs/components/json.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Link 链接', path: '/docs/components/link', getComponent: (location, cb) => require(['../../docs/components/link.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'List 列表', path: '/docs/components/list', getComponent: (location, cb) => require(['../../docs/components/list.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Mapping 映射', path: '/docs/components/mapping', getComponent: (location, cb) => require(['../../docs/components/mapping.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Nav 导航', path: '/docs/components/nav', getComponent: (location, cb) => require(['../../docs/components/nav.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Panel 面板', path: '/docs/components/panel', getComponent: (location, cb) => require(['../../docs/components/panel.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Progress 进度条', path: '/docs/components/progress', getComponent: (location, cb) => require(['../../docs/components/progress.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'QRCode 二维码', path: '/docs/components/qrcode', getComponent: (location, cb) => require(['../../docs/components/qrcode.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Remark 标记', path: '/docs/components/remark', getComponent: (location, cb) => require(['../../docs/components/remark.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Service 功能型容器', path: '/docs/components/service', getComponent: (location, cb) => require(['../../docs/components/service.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Spinner 加载中', path: '/docs/components/spinner', getComponent: (location, cb) => require(['../../docs/components/spinner.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Status 状态', path: '/docs/components/status', getComponent: (location, cb) => require(['../../docs/components/status.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Switch 开关', path: '/docs/components/switch', getComponent: (location, cb) => require(['../../docs/components/switch.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Table 表格', path: '/docs/components/table', getComponent: (location, cb) => require(['../../docs/components/table.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Tabs 选项卡', path: '/docs/components/tabs', getComponent: (location, cb) => require(['../../docs/components/tabs.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Tasks 任务操作集合', path: '/docs/components/tasks', getComponent: (location, cb) => require(['../../docs/components/tasks.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Tpl 模板', path: '/docs/components/tpl', getComponent: (location, cb) => require(['../../docs/components/tpl.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Video 视频', path: '/docs/components/video', getComponent: (location, cb) => require(['../../docs/components/video.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Wrapper 包裹容器', path: '/docs/components/wrapper', getComponent: (location, cb) => require(['../../docs/components/wrapper.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) }, { label: 'Wizard 向导', path: '/docs/components/wizard', getComponent: (location, cb) => require(['../../docs/components/wizard.md'], doc => { cb(null, makeMarkdownRenderer(doc)); }) } ] } ]; export default class Doc extends React.PureComponent { state = { prevDoc: null, nextDoc: null }; componentDidMount() { this.props.setNavigations(docs); this.setDocFooter(); } componentDidUpdate(preProps) { if (this.props.location.pathname !== preProps.location.pathname) { this.props.setNavigations(docs); this.setDocFooter(); } } setDocFooter() { const newDocs = mapTree(docs, doc => ({ ...doc, children: Array.isArray(doc.children) && doc.children.length ? doc.children.map(item => ({ ...item, group: doc.group || doc.label })) : null })); const flattenDocs = flattenTree(newDocs).filter(i => !!i.path); const docIndex = flattenDocs.findIndex( d => `${this.props.ContextPath}${d.path}` === location.pathname ); this.setState({ prevDoc: flattenDocs[docIndex - 1], nextDoc: flattenDocs[docIndex + 1] }); } render() { return ( <> {React.cloneElement(this.props.children, { ...this.props.children.props, theme: this.props.theme, classPrefix: this.props.classPrefix, locale: this.props.locale, ContextPath: this.props.ContextPath, prevDoc: this.state.prevDoc, nextDoc: this.state.nextDoc })} ); } }