9

コンポーネントの 1 つから Reach Router をプログラムでナビゲートしようとしています。URL は期待どおりに更新されますが、ルートはレンダリングされず、React 開発者ツールを見ると、元のコンポーネントが表示されていることがわかります。

新しい URL でページを一度更新すると、正しくレンダリングされます。

新しいルートをレンダリングするにはどうすればよいですか?

簡単な例を以下に示します。私はこれを使用して@reach/router@1.2.1います (Redux を使用していることも明らかです)。

import React from 'react';

import { navigate } from '@reach/router';

const ExampleComponent = props => {
  navigate('/a/different/url');

  return <div />;
};

export default ExampleComponent;
4

4 に答える 4

2

@reach/routerをredux-first-historyと組み合わせて使用​​している可能性がありますか? 同じ問題があり、historyContext の次の構成で解決できたためです。

import { globalHistory } from "@reach/router";
// other imports

const historyContext = createReduxHistoryContext({
   // your options...
   reachGlobalHistory: globalHistory // <-- this option is the important one that fixed my issue
}

詳細については、redux-first-history の README を参照してください。

于 2020-05-29T09:27:21.747 に答える