简体   繁体   English

如何覆盖导航下拉@coreui/react

[英]How to override nav-dropdown @coreui/react

I'm using coreui in my react project and to be more specific - appSideBarNav, which I use to represent folders.我在我的反应项目中使用 coreui,更具体地说 - appSideBarNav,我用它来表示文件夹。 The problem is that folders can be nested and when the folder(let it be A) have a child(B), the A-folder would become nav-dropdown.问题是文件夹可以嵌套,当文件夹(让它成为 A)有一个子(B)时,A 文件夹会变成导航下拉菜单。 When you click on A-folder, you have to be redirected to url/A, but instead the Dropdown element gets toggled and no redirect happens.当您单击 A 文件夹时,您必须被重定向到 url/A,但是 Dropdown 元素被切换并且不会发生重定向。 In other words - you can be redirected by only Folders, which do not have any children.换句话说 - 您只能通过没有任何子项的文件夹重定向。 Remarkable, that all folders has correct url attribute.值得注意的是,所有文件夹都具有正确的 url 属性。 In addition, I pass onClick function to every folder to see if it has been triggered after clicking on it in the list, and Only Folders without children trigger onClick function after being Clicked.另外,我将onClick函数传递给每个文件夹,查看列表中点击后是否触发,只有没有子文件夹的文件夹被点击后才会触发onClick函数。

Code example below represents recursive function of Filling the appSideBarNav with folders:下面的代码示例表示用文件夹填充 appSideBarNav 的递归函数:

        const addFoldersToNav = (folders, sourceURL = '/mail/') => {
            return (folders.map(item => {

                console.log('creating and adding folder')
                const folder = {
                    name: (item.Type == 10) ? item.Name : i18next.t(item.Name.toLowerCase() + '_folder'),
                    url: sourceURL + item.Name,
                    icon: folderTypes.get('' + item.Type),
                    // onClick: (console.log('wow')),
                    attributes: {
                        onClick: event => {
                            console.log('clicked')
                            event.nativeEvent.stopImmediatePropagation()
                            window.location = "#" + sourceURL + item.Name;
                            localStorage.setItem('Path', sourceURL + ':folderId/:selectedId?')
                        },
                        onToggle: () => { console.log('toggled') },
                    },
                    wrapper: {
                        element: <input onClick={console.log('wrapped')} />
                    },
                    notSeenAmount: 0,
                    id: inc++,
                    children: (item.SubFolders) ? addFoldersToNav(item.SubFolders['@Collection'], sourceURL + item.Name + '/') : null,
                }
                return folder
            }))
        }

Have a look here https://github.com/coreui/coreui-react/blob/master/src/SidebarNav.md#navconfig-shape看看这里https://github.com/coreui/coreui-react/blob/master/src/SidebarNav.md#navconfig-shape

To override default behavior of nav-dropdown toggle and navigate to url use custom onClick method:要覆盖导航下拉切换的默认行为并导航到 url,请使用自定义 onClick 方法:

{ name: 'Base', url: '/base', icon: 'icon-puzzle', attributes: {onClick: (e, item)=>{ console.log(e, item) }}, // (v2.5.6 up) optional children: [] } { name: 'Base', url: '/base', icon: 'icon-puzzle', attributes: {onClick: (e, item)=>{ console.log(e, item) }}, // (v2 .5.6 up) 可选的孩子:[] }

This helped to solve my problem which was quite the same as yours这有助于解决我的问题,这与您的问题完全相同

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM