__firebase_request_key
Twitter のサーバーからリダイレクトされた後に Twitter のシングル サインオン プロセスによって生成された URL からパラメーター値を取得するために、routes.jsx ファイルでルートを定義するにはどうすればよいでしょうか?
http://localhost:8000/#/signin?_k=v9ifuf&__firebase_request_key=blablabla
次のルート構成を試しましたが、:redirectParam
指定されたパラメータがキャッチされません。
<Router>
<Route path="/" component={Main}>
<Route path="signin" component={SignIn}>
<Route path=":redirectParam" component={TwitterSsoButton} />
</Route>
</Route>
</Router>
ベストアンサー1
React Router v6、フックの使用
react-router-dom v6には、新しいフックがあります。検索パラメータを使用する. だから
const [searchParams, setSearchParams] = useSearchParams();
searchParams.get("__firebase_request_key")
次のように表示されます"blablabla"
。searchParams は URLSearchParams のインスタンスであり、Object.fromEntries などを使用するためのイテレータも実装していることに注意してください。
React Router v4/v5、フックなし、汎用
React Router v4ではクエリを解析しなくなりましたが、this.props.location.search
(またはuseLocation、下記参照)経由でのみアクセスできます。理由については以下を参照してください。nbeuchat の回答。
例えば質問ライブラリをインポートqs
する
qs.parse(this.props.location.search, { ignoreQueryPrefix: true }).__firebase_request_key
もう一つの図書館はクエリ文字列。 見るこの答え検索文字列の解析に関するさらなるアイデアについては、IE 互換性あなたも使うことができます
new URLSearchParams(this.props.location.search).get("__firebase_request_key")
this.props.location
機能コンポーネントの場合はフックに置き換えます使用場所。 を使用することもできますwindow.location.search
が、変更時にReactレンダリングをトリガーすることはできません。 (非機能)コンポーネントが の直接の子でない場合は、 をSwitch
使用する必要があります。ルーター付きルーターが提供するプロパティのいずれかにアクセスします。
リアクトルーター v3
React Routerはすでに位置情報を解析し、それをルートコンポーネントプロパティとして。クエリ(URLの?の後)部分には、次のようにアクセスできます。
this.props.location.query.__firebase_request_key
ルータ内でコロン(:)で区切られたパスパラメータ値を探している場合は、次の方法でアクセスできます。
this.props.match.params.redirectParam
これは、最近の React Router v3 バージョン (どれかは不明) に適用されます。古いバージョンのルーターでは、 を使用すると報告されていますthis.props.params.redirectParam
。
一般的な
nizam.spの提案
console.log(this.props)
いずれにしても役に立ちます。