【问题标题】:How to correctly use Reach Router Links with a Fluent UI Nav如何通过 Fluent UI Nav 正确使用到达路由器链接
【发布时间】:2020-10-04 11:54:30
【问题描述】:

有没有办法让 Fluent UI(以前的 Office Fabric UI)导航组件正常工作,将其 <a> 元素链接替换为来自 Reach Router 的自定义链接(例如 <Link>)?

Fluent UI Nav 提供了一个 onRenderLink 属性,但这只会改变最里面的 <a> 元素的内部内容。它使用传统的<a> 将外部包装元素留下,这会在用户使用它时导致整个页面重新呈现。

它还提供了 linkAs 属性,但它改变了“组标题”的整个内容,并采用了首先使用 Nav 的所有漂亮的 CSS 样式优势。

有没有办法让它真正发挥作用?

【问题讨论】:

    标签: reactjs fluent-ui fluentui-react


    【解决方案1】:

    我做了更多的谷歌搜索,发现了这个使用 LinkAs 的代码笔:

    (props) => {
       return <Link className={props.className} style={{color: 'inherit', boxSizing: 'border-box'}} to={props.href}>
         <span style={{display: 'flex'}}>
          { !!props.iconProps && <Icon style={{margin: '0 4px'}} {...props.iconProps} /> }
          {props.children}
          </span>
    
        </Link> ;
      }
    

    有点失望,您基本上必须对他们的 CSS 进行逆向工程并自己渲染才能使其正常工作。

    【讨论】:

    • 试过了,但导航本身在单击链接后不会更新以反映位置。还有更多吗(比如设置selectedKey)?
    • 我在这里找到了原件 (codepen.io/micahgodbolt/pen/EOVXGQ),但它在 Codepen 中甚至无法正常工作。这个导航控件似乎充其量是错误的,可能毫无价值。
    • 我将@withRouter 添加到导航的父组件中,导航开始跟随路线。在路线更改之前没有重新渲染。
    猜你喜欢
    • 2020-04-28
    • 2019-07-22
    • 1970-01-01
    • 2019-04-06
    • 2022-01-11
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 2019-01-10
    相关资源
    最近更新 更多