ホームページ > ウェブフロントエンド > jsチュートリアル > v4 履歴にアクセスできない理由

v4 履歴にアクセスできない理由

亚连
リリース: 2018-06-13 10:28:07
オリジナル
2216 人が閲覧しました

この記事では主に、react-router/react-router-dom v4 の履歴にアクセスできない問題の解決策をサンプルコードを通じて詳しく紹介します。これは、すべての人の学習や仕事に一定の参考学習価値があります。必要な友達は、ぜひ一緒に勉強しに来てください。

はじめに

最近アップグレードされたreact-router-domを使用しているときに、this.props.historyを使用するサブコンポーネントが見つかりません。公式ドキュメントを見ましたが、見つかりませんでした。非同期実行が完了した後にページにジャンプするので、どうすればよいですか? 国内の知識は、あなたが私のものをコピーし、私があなたのものをコピーすることです。ごみ。 Google に行くしかありません、

ついに答えを見つけました: (コードを一目で見る)

解決策

最初にルーターを使用します

import React, { Component } from 'react';
import { BrowserRouter, Route } from 'react-router-dom';
import { Provider } from 'mobx-react';
import stores from '../store/index';
import Bundle from '../components/bundle';
import Hello from 'bundle-loader?lazy!../components/hello.jsx';
// 这是按需加载,对于现在讨论的问题没有影响
const HelloAPP = () => (
 <Bundle load={Hello}>
  {(Hello) => <Hello />}
 </Bundle>
);
export default class App extends Component {
 constructor(props) {
 super(props);
 }
 render() {
 return (
  <Provider { ...stores }>
  <BrowserRouter basename="/">
   <Route path="/" component={HelloAPP}/>
  </BrowserRouter>
  </Provider>
 );
 };
}
ログイン後にコピー

次にサブコンポーネントの履歴を使用します

import React, { Component } from &#39;react&#39;;
// 需要这步,你要npm 这个,
import PropTypes from &#39;prop-types&#39;;
export default class Hello extends Component {
 constructor(props) {
 super(props);
 }
 // 这一步是重点
 static contextTypes = {
 router: PropTypes.object.isRequired
 };
 test = () => {
 console.log(this.context);
 setTimeout(() => {
  this.context.router.history.push("/otherPath");
 }, 1000);
 };
 render() {
 return (
  <p>
  <button onClick={this.test}>按钮</button>
  </p>
 );
 };
}
ログイン後にコピー

を見てみましょうthis.context :

上記は私があなたのためにまとめたものです。

関連記事:

node.js やその他のテクノロジーを使用してログインと登録機能を実装するにはどうすればよいですか?

vueでフィルターを使用する方法

フロントエンドアルゴリズムにおけるテキスト回避に関連する問題(詳細なチュートリアル)

以上がv4 履歴にアクセスできない理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート