Почему React onLeave = {} выполняется для каждого переключателя страницы, а не только для назначенного? - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть этот маршрут, который я хочу, чтобы некоторые вещи выполнялись, когда пользователь покидает его.

Итак, я обнаружил ловушку onLeave

<Switch>
    <Route exact path="/layout" onLeave={ console.log("LEFT LAYOUT") } render={(props) => <GridLayoutApps retracted={this.state.sideBarRetracted} {...props}/>} />
</Switch>

Предполагается, что console.log "Left layout "всякий раз, когда я нахожусь в / layout, и решите загрузить другой маршрут. Дело в том, что этого не происходит, так как console.log загружается каждый раз, когда я переключаю ЛЮБОЙ маршрут.

У меня есть маршруты в моем приложении. js файл, который я

export default withRouter(App);

Я инкапсулировал это в индекс

ReactDOM.render(<BrowserRouter><Provider store={store}><App /></Provider></BrowserRouter>, document.getElementById('root'));

1 Ответ

0 голосов
/ 28 апреля 2020

onLeave должен быть функцией. В настоящее время это просто обычная опора

<Switch>
    <Route exact path="/layout" onLeave={() => {console.log("LEFT LAYOUT")} } render={(props) => <GridLayoutApps retracted={this.state.sideBarRetracted} {...props}/>} />
</Switch>

Однако, обратите внимание, что onLeave больше не доступен в реакции-маршрутизаторе v4 и далее, и вам нужно использовать ловушку componentWillUnmount или useEffect для запуска того же самого поведение

...