React:如何使用Office UI Fabric导航而不刷新页面

时间:2018-07-25 17:08:07

标签: reactjs office-ui-fabric

我正在使用Office UI Fabric创建具有不同视图的应用。

navbar.js:

import React, { Component } from 'react';
import { Nav } from 'office-ui-fabric-react/lib/Nav';

export default class NavBar extends Component {

  render() {
    return (
      <Nav
        groups={[
          {
            links: [
              { name: 'Home', key: 'Home', url: '/' },
              { name: 'Activity', key: 'Activity', url: '/activity' },
              { name: 'News', key: 'News', url: '/news' },
              { name: 'Documents', key: 'Documents', url: '/documents' }
            ]
          }
        ]}
      />
    );
  }
}

在App.js中,我只返回和。 问题是,当我单击NavBar的项目时,页面将刷新并在该路线中加载整个视图。如何重新加载组件而不是整个页面?


这是App.js渲染返回中的路由部分:

<div className="body">
    <NavBar />
    <Router>
      <div style={{ flex: 1}}>
       {routes.map((route, index) => (
         <Route
           key={index}
           path={route.path}
           exact={route.exact}
           component={route.main}
         />
       ))}
      </div>
   </Router>
</div>

我的路线如下:

const routes = [
  {
    path: "/",
    exact: true,
    main: () => <Home />
  },
  {
    path: "/activity",
    exact: true,
    main: () => <Activity />
  },
  {
    path: "/news",
    exact: true,
    main: () => <News/>
  },
  {
    path: "/documents",
    exact: true,
    main: () => <Documents />
  }
];

页面工作正常,但是如果我单击导航栏项目,然后渲染目标组件,该如何使用它来指定导航栏项目?

2 个答案:

答案 0 :(得分:0)

我找到了答案: https://github.com/OfficeDev/office-ui-fabric-react/issues/915

我在每个项目中都使用了onClick,并且使用了传统的e.preventDefault来停止默认行为

答案 1 :(得分:0)

从“反应路由器”导入{重定向};

Return <Redirect to='/path_name' />;