わかりました、私はしようとしてうんざりしています。onEnter
メソッドは機能しません。それはなぜですか?
// Authentication "before" filter
function requireAuth(nextState, replace){
console.log("called"); // => Is not triggered at all
if (!isLoggedIn()) {
replace({
pathname: '/front'
})
}
}
// Render the app
render(
<Provider store={store}>
<Router history={history}>
<App>
<Switch>
<Route path="/front" component={Front} />
<Route path="/home" component={Home} onEnter={requireAuth} />
<Route exact path="/" component={Home} onEnter={requireAuth} />
<Route path="*" component={NoMatch} />
</Switch>
</App>
</Router>
</Provider>,
document.getElementById("lf-app")
編集:
メソッドはonEnter={requireAuth()}
を呼び出すと実行されますが、明らかにそれは目的ではなく、目的のパラメーターも取得できません。
onEnter
はreact-router-4
に存在しなくなりました。目的の機能を取得するには、<Route render={ ... } />
を使用する必要があります。 Redirect
の例には具体的なシナリオがあると思います。以下に合わせて変更しました。
<Route exact path="/home" render={() => (
isLoggedIn() ? (
<Redirect to="/front"/>
) : (
<Home />
)
)}/>
v2/v3からv4への移行 :のドキュメントに従って、react-router-v4からonEnter
、onUpdate
、およびonLeave
が削除されました。
on*
プロパティ
React Router v3は、onEnter
、onUpdate
、およびonLeave
メソッドを提供します。これらは基本的に、Reactのライフサイクルメソッドを再作成していました。V4では、
<Route>
によってレンダリングされるコンポーネントのライフサイクルメソッドを使用する必要があります。onEnter
の代わりに、componentDidMount
またはcomponentWillMount
を使用します。onUpdate
を使用する場所では、componentDidUpdate
またはcomponentWillUpdate
(または場合によってはcomponentWillReceiveProps
)を使用できます。onLeave
はcomponentWillUnmount
に置き換えることができます。