React Router V4でネストされたルートを使用している場合、NoMatchコンポーネントにリダイレクトするにはどうすればよいですか?React Router v4 globalネストされたルートの子に一致しない
import React from 'react';
import ReactDOM from 'react-dom';
import injectTapEventPlugin from 'react-tap-event-plugin';
injectTapEventPlugin();
import {
BrowserRouter as Router,
Route,
Switch
}
from 'react-router-dom';
import Website from './website/Website';
const Register = ({ match}) => {
return (
<div>
<Route exact path={match.url} render={() => {return <h1>Register</h1>} } />
<Route path={`${match.url}/detail`} render={()=>{return <h1>Register Detail</h1>}} />
</div>
)
}
const App =() => (
<Router>
<Switch>
<Route exact path="/" render={() => {return <h1>Home</h1> }} />
<Route path="/register" component={Register} />
<Route component={() => {return <h1>Not found!</h1>}} />
</Switch>
</Router>
);
ReactDOM.render(
<App/>, document.getElementById('root'));
あなたが見ることができるように、そこに登録以下NOMATCHルートがあるが、私は私の子コンポーネントの登録に同じルートマップを使用したくない:
は、ここに私のコードです。このようにして、私が/ register/unregisteredmatchに行くと、NoMatch Routeに入力しないので、ページは単に空白になります。
私の子供のルートで指定しないで、グローバルNoMatchをマップするにはどうすればよいですか?子コンポーネントにこの責任を渡すことは望ましくありません。
ありがとうございました。
HoCを作成する必要があります。登録された子ルートが一致するかどうかは関係なく常に登録されます。そのためのハンドラを作成する必要があります –
@ReiDien私が理解していれば、NoMatchハンドラをカプセル化する「抽象」コンポーネントを作成する必要があります...そうですか?ありがとうございます – yurikilian