php - Next js - 每次更改路由时在服务器端调用一个函数
问题描述
我正在将一个旧堆栈移动到下一个 js,我需要一些帮助。
我有一个 php 后端,我想在每次更改路由时从该后端检查一个控制器,并且我想在服务器端执行此操作。
为了改变路线,我使用Link
了next-routes
,它只对客户端有影响。
有什么方法可以在不刷新应用程序的情况下调用服务器端的控制器?
解决方案
您可以利用路由器的事件和自定义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;
推荐阅读
- node.js - 从超级账本结构中获取“错误:8 RESOURCE_EXHAUSTED:发送的消息大于最大值(2217 对 15)”
- r - 带有数据的 R 构建包
- angular - angular6:使用 cli 添加通用支持
- ios - iOS 11 Swift 下的 UITabBar 转换问题
- vim - 如何在vim中按数字键突出显示行号?
- git - 如何清除 git 状态?
- node.js - Loopback 客户登录访问令牌
- reactjs - 如何使用 css 或非内联样式设置 gatsby-image 样式
- java - Java 语法数组 {1,2,3} vs new int[] {1,2,3}
- c# - 对字符串进行 Lambda 操作以检查数字