首页 > 解决方案 > Nextjs router.beforepopstate 未触发

问题描述

//_.app.js   
 import React from 'react';
    import App, { Container } from 'next/app';
    import Layout from '../components/layout';
    import Head from 'next/head';
    import Router from 'next/router';

    class MyApp extends App {
      componentDidMount() {
        // Router.events.on('routeChangeStart', (url) => {
        //   alert('route changes');
        // });
        Router.beforePopState(({ url, as, opts }) => {
          alert('before pop state');
          return true;
        });
      }

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

        return (
          <Container>
            <Head>
              <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"></link>
            </Head>
            <Layout>
              <Component {...pageProps} />
            </Layout>
          </Container>
        );
      }
    }

    export default MyApp;

嗨,我可以问为什么当我按下浏览器的后退和前进按钮时 router.beforepopstate 根本没有触发..?1. 我正在尝试实现一些事情,即按下后退按钮我会先做一些事情,然后再转到下一页。2.但是当我按下后退按钮时,什么都没有发生,只有当我使用 router.push 时触发了 routechangestart ......如果你们中的任何人真的能帮助我,我将非常感激..

标签: javascriptnode.jsnext.js

解决方案


推荐阅读