【问题标题】:React Router does not update ViewReact Router 不更新视图
【发布时间】:2017-05-09 01:42:48
【问题描述】:

我开始使用 React,但在理解如何使 react-router 工作时遇到了问题。

在我的项目中,我创建了一个导出简单渲染函数的App.js 文件:

export default class App extends React.Component {
    render () {
        return <Router>
            <div>
                <Link to="/connected">Login</Link>
                <Link to="/">Home</Link>

                <Route path="/connected" component={Connected}/>
                <Route exact path="/" component={LoginPage}/>

            </div>
        </Router>
    }
}

当然,在文件的顶部,我导入了两个组件:ConnectedLoginPage 以及一堆其他组件:

import React from 'react'

import {
    HashRouter as Router,
    Route,
    Link
} from 'react-router-dom'

import LoginPage from './pages/LoginPage'
import Connected from './pages/Connected'

我的组件很简单:

import React from 'react'

export default class LoginPage extends React.Component {

    render () {
        return  <div>
            Hello World 1
        </div>
    }
}

第二个组件几乎相同。

我的问题是:

当我单击&lt;Link to="/"&gt;Home&lt;/Link&gt; 时,页面没有更新为LoginPage 组件。但是如果我刷新页面,就会出现LoginPage 组件。如果我点击&lt;Link to="/connected"&gt;Login&lt;/Link&gt;,路由器不会更新页面,我还需要完全刷新页面才能显示正确的组件。

我做错了什么?您还需要哪些其他信息来帮助我解决问题?

【问题讨论】:

  • 这只是一个猜测。将HashRouter 替换为BrowserRouter
  • 我尝试了 BrowserRouter,但它也没有工作。我决定使用 HashRouter,因为我的开发服务器只提供 / URL
  • 你正在使用的 React Router 版本?我假设您使用的是第 4 版。
  • 我正在使用"react-router-dom": "^4.1.1"
  • 看来我不是唯一一个有问题的人:stackoverflow.com/questions/43836434/…

标签: reactjs react-router


【解决方案1】:

将其复制到“Package.json”>“依赖项”:"react-router": "^2.4.0",

那就npm install

完成后:

试试这个:

第一个组件(Routes,它是 App.jsx)(也许你需要更改导入的路由)

import React from 'react';
import ReactDOM from 'react-dom';
import { Router, Route, browserHistory, Redirect } from 'react-router';

import LoginPage from './pages/LoginPage'
import Connected from './pages/Connected'

ReactDOM.render(
    <Router history={browserHistory}>
        <Route path="/" component={LoginPage}/>
        <Route path="/connected" component={Connected}/>
    </Router>
    , document.getElementById('root')
);

第二个组件(首页):

import React from 'react';
import { Link } from 'react-router';

export default class Home extends React.Component {
    render() {
        return(
            <div>
                <h1> This is HomePage </h1>
                <h3> Click to go HomePage </h3>
                <Link to="/">Home</Link>
                <h3> Click to go Connected </h3>
                <Link to="/connected">Connected</Link>
            </div>
        )
    }
}

第三个组件(已连接):

import React from 'react';
import { Link } from 'react-router';

export default class Connected extends React.Component {
    render() {
        return(
            <div>
                <h1> This is ConnectedPage </h1>
                <h3> Click to go HomePage </h3>
                <Link to="/">Home</Link>
                <h3> Click to go Connected </h3>
                <Link to="/connected">Connected</Link>
            </div>
        )
    }
}

【讨论】:

  • 你对版本有点正确,我使用的是 react 0.14.x 并更新到 15.x.x 解决了这个问题
  • 很高兴为您提供帮助。
猜你喜欢
  • 2019-03-12
  • 2020-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-29
  • 1970-01-01
  • 1970-01-01
  • 2017-12-31
相关资源
最近更新 更多