实现 發表於 2020-9-11 16:39:00

creact-react-app+react-route-dom路由跳转页面不渲染,或者不变化

<h1 style="text-align: center">react-app+react-router-dom路由跳转页面不渲染,或者不变化</h1>
<h2>路由配置:</h2>
<div class="cnblogs_code">
<pre>import React <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">react</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
import {Router, Route, Switch} </span><span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">react-router-dom</span><span style="color: rgba(128, 0, 0, 1)">'</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">BrowserRouter as</span>
import { createBrowserHistory } <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">history</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">

import Login </span><span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">./login</span><span style="color: rgba(128, 0, 0, 1)">'</span>;<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">普通加载模块</span>
import Main <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">./main</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;

</span><span style="color: rgba(0, 0, 255, 1)">const</span> history =<span style="color: rgba(0, 0, 0, 1)"> createBrowserHistory();

</span><span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> RouteMap extends React.Component {
render () {
    </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> (
      </span>&lt;Router history={ history }&gt;
      &lt;Switch &gt;
          &lt;Route path=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/</span><span style="color: rgba(128, 0, 0, 1)">"</span> exact component={Login}/&gt;
          &lt;Route path=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/login</span><span style="color: rgba(128, 0, 0, 1)">"</span> component={Login}/&gt;
          &lt;Route path=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/main</span><span style="color: rgba(128, 0, 0, 1)">"</span> component={Main}/&gt;<span style="color: rgba(0, 0, 0, 1)">
          {</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">&lt;Redirect from="/*" to="/404"/&gt;</span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">}
      </span>&lt;/Switch&gt;
      &lt;/Router&gt;<span style="color: rgba(0, 0, 0, 1)">
    )
}
}

export </span><span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)"> RouteMap

</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">_this.props.history.push('/main')</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">跳转可后退
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">_this.props.history.replace('/main')</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">跳转不可后退
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> &lt;Redirectfrom="/*" to="/" /&gt; </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">重定向
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> &lt;Route path="*" component={NotFound404}/&gt;</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">默认</span></pre>
</div>
<p><span style="color: rgba(255, 0, 0, 1)">重点来了~!!!!!!!!!!!</span></p>
<p><span style="color: rgba(0, 0, 0, 1); font-size: 14pt">可以看到代码上面有一个注解&nbsp;</span>BrowserRouter as,网上有很多人说加上它,但是我觉得没有解决根本问题</p>
<p><span style="font-size: 14pt">当路由加上&nbsp;BrowserRouter as Router&nbsp; 的时候可以跳转,<span style="font-size: 18pt">但是<span style="font-size: 14pt">页面会报错,提示你</span></span></span></p>
<div class="cnblogs_code">
<pre>tiny-warning.esm.js:<span style="color: rgba(128, 0, 128, 1)">11</span> Warning: &lt;BrowserRouter&gt; ignores the history prop. To use a custom history, use `import { Router }` instead of `import { BrowserRouter <span style="color: rgba(0, 0, 255, 1)">as</span> Router }`.</pre>
</div>
<p>&nbsp;</p>
<p><span style="font-size: 14pt">身为强迫症患者 怎么能容忍这个警告!!经过我仔细对比 终于发现问题所在,<span style="font-size: 18pt; color: rgba(255, 0, 0, 1)"><strong>&nbsp;</strong></span></span><span style="font-size: 18pt; color: rgba(255, 0, 0, 1)"><strong><code>history&nbsp;<strong><code>history&nbsp;<strong><code>history&nbsp;&nbsp;</code></strong><strong><code>history</code></strong></code></strong></code></strong></span></p>
<p><span style="font-size: 14pt">创建项目的时候我是直接安装 npm i history&nbsp;&nbsp;npm i react-router-dom 从而忽略版本这个问题,造成页面不出来</span></p>
<p><span style="font-size: 14pt; color: rgba(255, 0, 0, 1)"><code><span style="color: rgba(0, 0, 0, 1)">然后就出现上面的错误,经过我筛选才发现这个问题所在,特此谨记,然后我安装&nbsp;</span></code><strong><code>&nbsp;npm i history@4.1.0&nbsp; <span style="color: rgba(0, 0, 0, 1)">解决!!!!!!</span></code></strong></span></p>
<p><span style="font-size: 14pt; color: rgba(255, 0, 0, 1)"><span style="color: rgba(0, 0, 0, 1)">网上查找原因:</span></span></p>
<p>&nbsp;</p>
<p><span style="font-size: 14pt; color: rgba(255, 0, 0, 1)"><span style="color: rgba(0, 0, 0, 1)"><img src="https://img2020.cnblogs.com/blog/1506521/202009/1506521-20200911163244585-439786497.png" alt="" loading="lazy"></span></span></p>
<p>&nbsp;</p>
<p><span style="font-size: 14pt">众所周知&nbsp; react-router-dom 是基于 react router 的 ,而它的版本还没有更新到。汗啊!!</span></p>
<p>&nbsp;</p>

</div>
<div id="MySignature" role="contentinfo">
    转载标明来路-博客园,
联系方式1763907618@qq.com<br><br>
来源:https://www.cnblogs.com/wangyongping/p/13652524.html
頁: [1]
查看完整版本: creact-react-app+react-route-dom路由跳转页面不渲染,或者不变化