react-router-dom : 更新 url 但不渲染新组件

用户1462617

我一整天都对这个问题有点迷茫。在按钮上单击 url 更改但不呈现新页面,我不明白为什么。

我正在使用 react-dom-router 5.2.0

                       INDEX JS

 import {Router} from 'react-router-dom';
 import history from './history';

ReactDOM.render(
  <React.StrictMode>
    <Router history={history}>
      <App />
    </Router>
</React.StrictMode>,
  document.getElementById('root')
);
                           APP JS

import Server from './Server';
import React from 'react';

function App() {
  return (

   <Server />

  );
}

export default App;
                           SERVER JS

export default class Server extends Component
{
render()
    {


        return(


            <div className="Homepage" >

                <h1 className="header">Server</h1>



                     <button  className="button" 
                    onClick={() => history.push('/control')}>
                            Lets go
                    </button>

                }

      </div>

        );  
    }
}

请注意:我<Control/>直接在上面的渲染方法中添加了它,它可以很好地渲染组件。

                        CONTROL JS

import React, {Component} from 'react';
import Page2_View from './Page2_View';

export default class Control extends Component
{
    constructor(props)
    {
        super(props);
    }

    render()
    {
        return(

            <Page2_View/>

        );


    }

}
                    Page2_View

import React, {Component} from 'react';

const Page2_View = (props) =>
{
    return(

        <h1> PAGE 2 VIEW </h1>

    );
}

export default Page2_View;
         ROUTES JS

import {BrowserRouter as Router, Route, Redirect, Switch} from 'react-router-dom';
const Routes = () =>
{
    return(

            <Router>
                <div>
                    <Switch>
                        <Route exact path="/test" component={Server}/>
                        <Redirect from = '/test' to = '/control'/>
                        <Route exact path="/control" component={Control}/>
                    </Switch>
            </div>
            </Router>

    );

}

export default Routes;
                          HISTORY JS

import {createBrowserHistory as history} from 'history';

export default history();

我感谢所有的帮助。谢谢

用户1462617

我已经意识到我做错了什么并且能够解决我的问题。

关键是要了解 react-router-dom 的 Router 模块带有三个 props : path 、 history 和 component。

因此,为了在按钮上重定向页面,单击所有我必须在 App.js 中的标记之间嵌入我的所有路由

                     APP JS
function App() {
  return (
  <Router>
        <Switch>
            <Route exact path="/test" component={componentA}/>
            <Route exact path="/test2" component={componentB}/>

        </Switch>
</Router>

  );
}

export default App;

然后你可以使用按钮 onClick 重定向

                               COMPONENTA JS
<button variant="secondary" 
                        className="button" size="lg" 
                        onClick={() => this.props.history.push('/test2')}>
                         RedirectTo
                     </button>

希望这对遇到此问题的其他人有所帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

React-route-dom 更新 url 但不渲染组件

React-router-dom更改URL,但不更新样式化组件的ThemeProvider的内容

React Router 更改 URL 但不渲染组件

React-router v4 更新 url 但不渲染组件

React-Router-Dom 的低级路由器仅导航到新 URL,但不呈现组件

React Router Dom - React Router 更改 url 但不更改页面

React Router URL更新,但组件未更新

更改网址时,react router dom不更新类组件

React Router-更新URL哈希而不重新渲染页面

React Router 改变路由但不渲染组件

React-router 更新 url 但组件未加载

React Router:URL搜索参数更改时组件未更新

当使用路由渲染道具而不是路由组件道具时,如何访问 react-router-dom 4 中的 url args?

无法使用 react-router-dom 链接对未安装的组件执行 React 状态更新

React Router Dom,只为某些路由渲染组件

当使用react-router-dom匹配URL路径时,如何防止React组件卸载

react-router-dom如何更新路由组件内的父状态

React 组件不更新 DOM

react-router setRouteLeaveHook仍在更新URL

react-router-dom条件渲染

React-router-dom v6,URL更改但组件未呈现

React Router 的多个参数更改 url 但不是组件

React Router Link未渲染组件,但更改了URL

React-router 更改位置但不渲染组件

react-router-dom <链接>未更新页面

react-router-dom链接不会更新页面

是否可以根据 react-router-dom 中同一 url 中的 url params 值呈现不同的组件?

如何使用 React Router 路由到另一个 url 并使用新组件重新渲染页面?

如何在React-Router-Dom NavLink单击时强制重新渲染React-Redux组件?