彼らはthis.props.matchで受け取ることができます前に、ルートのルーティング構成部品のみを設定

ときプロジェクトは、私がミスを犯しました。ヘッダー私が働いコンポーネントとして、ルートを設定し、アセンブリのヘッダーを隠しルートによれば、ヘッダ内と思いますが、何の利用Routeヘッダーラップ、無使用のwithRouterがないので、その内部は少ないthis.prop.matchより、this.propを受け付けていませんでした.location、this.prop.historyは、これら3つの属性ので、ルートがそれらを提供するために親コンポーネント、およびこの時間のあなたのヘッダーだけで普通のアセンブリです。

      <プロバイダストア= {店}>
                <BrowserRouter>
                    <ヘッダー/>
                    <ルートの正確なパス= "/" コンポーネント= {ホーム}> </ルート>
                    <ルートの正確なパス= "/ホーム" コンポーネント= {ホーム}> </ルート>
                    <ルートの正確なパス= "/ログイン" 成分= {ログイン}> </ルート>
                    <ルートの正確なパス= "/ディテール/:ID" コンポーネント= {詳細}> </ルート>
                </ BrowserRouter>
            </プロバイダ>

正しいアプローチは、そう任意の経路に適合するように、また正確に正確に一致せずにラップされたルートヘッダを使用することです

    <プロバイダストア= {店}>
                <BrowserRouter>
                    <ルートパス= "/" コンポーネント= {ヘッダ} />
                    <ルートの正確なパス= "/" コンポーネント= {ホーム}> </ルート>
                    <ルートの正確なパス= "/ホーム" コンポーネント= {ホーム}> </ルート>
                    <ルートの正確なパス= "/ログイン" 成分= {ログイン}> </ルート>
                    <ルートの正確なパス= "/ディテール/:ID" コンポーネント= {詳細}> </ルート>
                </ BrowserRouter>
            </プロバイダ>

そして、あなたはヘッダーthis.props.locationの中に入ることができ、ロジックのログインページがある場合には、ヘッダヘッド、リターン「空の文字列を表示されません。

もしこの - 1!== .props.location.pathname.indexOf( "/ログイン")){
       リターン '' 
}

おすすめ

転載: www.cnblogs.com/shengjunyong/p/12115082.html