当前位置: 首页 > 面试题库 >

ReactJS导航

章涵蓄
2023-03-14
问题内容

我正在研究一个示例reactjs应用程序(在学习过程中)。我有一个页面,其中列出了用户列表和一个添加按钮以添加新用户。

当我单击添加按钮时,我应该导航到用户表单以创建新用户。

在用户表单中单击“提交”按钮后,它应导航回到第一页,在该页面中应列出用户列表以及新用户。

如何在页面之间导航做出反应?


问题答案:

您可以使用React Router来完成。这是React Router教程。

用户列表是打开站点时显示的第一页,即您的索引页,所有其他页均为路线。

因此,您可以执行以下操作:

您可以使用路线创建一个单独的文件:

import UserList from 'path/to/user/list';
import AddUserForm from 'path/....';

const routes = (
    <Route path="/" component={App}>
        <IndexRoute component={UserList}/>
        <Route path="addUser" component={AddUserForm}/>
    </Route>
);

export default routes;

然后,您index.js应该看起来像这样:

import React from 'react';
import ReactDOM from 'react-dom';
import {Router, browserHistory} from 'react-router';
import routes from 'path/to/routes';

ReactDOM.render(<Router history={browserHistory} routes={routes}/>, document.getElementById('root'));

在这里,您将其包装在Routerfrom的来源之下,然后在其中react- router传递您要使用的历史道具并路由该道具。您可以使用browserHistoryhashHistory。BrowserHistory显示更干净的URL。使用哈希历史记录,您可以得到类似someurl.com/#/something

现在,在您的应用中,您可以执行以下操作:

export default class App extends Component {
    render() {

        return (
           <div>
              {this.props.children}
           </div>
        );
    }
}

{this.props.children} 从路由文件渲染所有路由,因为您已经为主路由指定了App组件

在添加用户按钮onClick事件上,您可以使用browserHistory导航到添加用户表单,因此:

import { browserHistory } from 'react-router;

.........

onClick(){
    browserHistory.push("/addUser");
}

.......
render(){
   return (
       //Userlist with the button
       <button onClick={this.onClick.bind(this)}>Add New user</button>
   );
}

然后在按钮上单击添加用户表单,相同的过程,您只需要使用导航到索引路径"/",因此:

import { browserHistory } from 'react-router;

.........

onClick(){
    //Your code to add user to the list of users
    browserHistory.push("/");
}

.......
render(){
   return (
       //Add user form
       <button onClick={this.onClick.bind(this)}>Add User</button>
   );
}

希望这可以帮助。



 类似资料:
  • 我目前有一个react应用程序,我正在工作,路由是错误的。我以前已经像这样设置了react应用程序及其路由,但是当试图路由到“details”组件时,只有url发生了变化,但是组件没有加载。多一双眼睛就能看到我错过了什么。我将路线设置为: < li>index.js: 根“/”路径组件加载,但我无法获取详细信息组件组件在使用history进行路由时呈现.

  • 问题内容: 如果要创建组件,似乎可以用很多不同的方式创建类。这些有什么区别?我怎么知道要使用哪个? 我只是假设他们做不同的事情,还是只是语法不同? 如果有人可以给我快速的解释或链接,我将不胜感激。我不想从一个新的框架开始,不知道到底有什么区别。 问题答案: 嗨,欢迎来到React! 我认为您在这里遇到的问题并不是与React特定的,而是与新的ES2015模块语法有关。在创建React类组件时,出于

  • 我尝试使用。如何在react应用程序中导航到其他页面? 这就是我添加react-router-dom链接方法的方式。 然后我收到以下错误:尝试导入错误:“react-router-dom”不包含默认导出(作为“link”导入)。

  • 问题内容: 我正在尝试使用ReactJS创建一个简单的Webapp,我想使用React-Bootstrap提供的。 我创建了一个文件,其中包含一个类,用于将和和路由与文件分开。但是,这两个部分似乎都不起作用。当我加载页面时,它只是空的,没有导航栏。谁能发现一个错误? Navigation.js: App.js: 我尝试使用已经包含的from ,这导致了相同的结果。 为了完整性,Page.js: 问

  • 我正在使用react router和react router redux处理我页面上的导航。我需要在组件内以编程方式更改url。我试着用这个方法:历史。推送实现这一点,但此方法只是更改url,与此url关联的组件不会更新。此应用程序是带有分页的简单列表,因此当我切换到下一页时,url会更改为例如/posts/1到/posts/2,但视图不会更新。我认为这应该是这样的: 用户单击分页项并单击处理程序

  • 问题内容: 我努力了: 但是会产生错误。如何在文件中导入CDN ? 问题答案: 您没有将CDN内容捆绑在JS内,这违背了将其包含在CDN上的目的:)。如果是JS,我会要求您使用externals,但是对于CSS,您可以使用https://github.com/jso0/html- webpack-cdn-plugin 代替。