Далее js - вызывать функцию на стороне сервера каждый раз, когда меняется маршрут - PullRequest
1 голос
/ 07 февраля 2020

Я перемещаю старый стек на следующий js, и мне нужна помощь.

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

Для изменения маршрута я использую Link из next-routes, которые влияют только на стороне клиента.

Можно ли как-нибудь вызвать контроллер на стороне сервера без обновления приложения?

1 Ответ

2 голосов
/ 09 февраля 2020

Вы можете воспользоваться Событиями маршрутизатора и Пользов. App, отслеживающими изменение маршрута и выполняющими необходимые действия. Ниже вы можете найти две примеры реализации, одна с использованием компонента класса, а другая с использованием хуков. Оба должны сделать свое дело.

// class component
import NextApp from 'next/app';
import Router from 'next/router';

class App extends NextApp {
  componentDidMount() { 
    Router.events.on('routeChangeStart', () => {
      // call to your backend
    });
  }

  render() {
    const { Component, pageProps } = this.props;

    return <Component {...pageProps} />;
  }
}

export default App;
// using hooks
import Router from 'next/router';

const App = ({ Component, pageProps }) => {
  React.useEffect(() => {
    const doMagic = () => {
      // do your thing
    }

    Router.events.on('routeChangeStart', doMagic); // add listener

    return () => {
      Router.events.off('routeChangeStart', doMagic); // remove listener
    } 
  }, []);

  return <Component {...pageProps} />;
}

export default App;
...