·

Fetching data from App Router client component in Nextjs

发布时间:2024-07-20 18:10:43阅读量:441
转载请注明来源

App Router is a new feature of Next.js since Next.js 13. It works within the app directory of the application. However, compared to Page Router, Nextjs documentation is lacking sufficient illustrations. For example, in server component of App Router, you can directly call fetch to fetch data from api. But when it comes to fetching data in client component, the documentation just claiming that you need to call a Route Handler from a client component, and the other doc does not actually contain any such example.

There are two ways to fetch data on a client component in App Router. The most easiet one is to use a third-party library such as SWR. However, in this article, we will give you a short tutorial on how to fetch data on a client component using Route Handler.

First, create a new folder api in the app directory. Then depending on your requirement, you can also create a folder login in api. Next, to complete creating a Route Handler, create a new file route.js|ts in the login directory. Then your folder structure will like the following:

\app
   \api
      \login
          route.js|ts

Now, add the following to your route.js|ts:

export async function GET() {
    const res = await fetch('https://www.example.com/api/...', {
      headers: {
        'Content-Type': 'application/json',
      },
    })
    const data = await res.json()
   
    return Response.json({ data })
}

Finally, call the Route Handler you defined in a client component as follows:

"use client";

export default function Page({ children }: { children: any }) {
  fetch('/api/login')
  .then((res)=>
    res.json()
  )
  .then((data)=>{
    console.log(data)
  })
}

You can see that creating a Route Handler is indeed creating a new route and URL in your application. Then to use the Route Handler to fetch data, you just need to call the URL you defined. In other words, calling a Route Handler means calling its URL.

0 人喜欢

评论区

暂无评论,来发布第一条评论吧!

弦圈热门内容

一个关于定义域光滑不变量的问题

我的提问:定理 22.3(定义域的光滑不变量)令$U \subset\mathbb{R}^n$为一个开子集,$S \subset\mathbb{R}^n$为一个任意子集,并且$f : U \rightarrow S$是一个微分同胚。那么$S$在$\mathbb{R}^n$中是开集。我无法理解为何集合$S$在$\mathbb{R}^n$中并不是自动开的。映射$f$是一个微分同胚,这意味着它在两个方向都是连续的,所以$S$是开的。回答:首先你所知道的是$U$中的开集$V$满足:$f(V)$在$S$中开,不是$f(V)$在$\mathbb{R}^n$中开。所以$f(U)=S$是在$S$中开。那个推断是说接着$f(U)=S$自动在$\mathbb R^n$中开,这是不一样的并且不是自动的。它需要证明。PS:这里说的是拓扑学中关于开集的一个重要盲点,即开集是相对的。尤其是考虑某个拓扑空间中的子集,要弄清楚究竟是在子集内开,还是在全空间内开。

史上最年轻菲尔兹奖得主Serre的经典作品:代数凝聚层Faisceaux algébriques cohérents

法国数学家让-皮埃尔·塞尔(Jean Pierre Serre)是迄今为止最年轻的菲尔兹奖得主,他获奖时年仅27岁,被国际数学领域誉为“在世最伟大”的数学家之一,他在代数拓扑学、多复变函数论、代数几何与数论方面取得了开创性的、历史性的巨大贡献。 Serre与被誉为代数几何的上帝的Grothendick是亲密无间的学术伙伴,他们两个的数学风格可以说是截然相反的,相较于Grothendick更喜欢构造宏大的理论,Serre更喜欢解决具体的问题。而两者的合作碰撞出了无数的火花,诞生了无数经典的理论。具体可见 明星崛起 - 宛如来自空无的召唤。而代数凝聚层(Faisceaux algébriques cohérents)这本书是Serre的经典著作之一,讲述的是层论方法在代数几何中的应用。本书原版是法语写的,后来被翻译成中英文版本。现在我将自己收藏已久的中英法三个版本,都分享出来给有需要的人,欢迎感兴趣的收藏收藏!PS:第一个附件为法语版,第二个为英语版,第三个为中文版。 作者不再提供附件下载。

弦圈更新日志:关于智力值和金币

今天我完善了弦圈的签到功能,并将其放置于首页。接着我新增了智力值和金币这两个用户特征,算是完成之前的计划 10月底至11月初,弦圈功能更新:上传附件。接着,我还顺带完善了一下附件上传功能。智力值其实就是用户的经验值,初始值是100,通过每天签到即可获得10点。而金币呢,看起来是付费的,但其实金币是免费获得的。我的设想是,每天签到获得智力值,而智力值可以存在小金库中产生金币,像钱存在银行中有利息一样,这就是所谓知识的力量😇!书中自有黄金屋!目前小金库还没来得急写,之后相关功能会陆续补上。并且以前的一些功能,还会进一步完善和优化,提高网站的使用体验。

代数几何教皇Grothendieck经典著作:代数几何原理EGA法语原版全系列(1)

熟知Grothendieck都知道,他有代数几何三部曲:EGA、SGA、FGA。其中知名度最高的无疑是EGA和SGA,他们可以说是代数几何的圣经,是无数重要且知名概念和理论的源头。相较于SGA,EGA受众可能更大些,看的人也更多些。毕竟SGA只是讨论班,而EGA则相当于代数几何的百科词典。在上帖中,我已经分享了SGA法语原版全系列(链接:代数几何教皇Grothendieck经典著作:代数几何讨论班法语原版全系列),EGA法语全系列相较于SGA在当年要好收集一些,但也不容易。在当时已经有中文翻译版了,还有英文版翻译,我都看过,最后觉得还是法语版最好,英文版次之。因为有些术语翻译成中文,真的不太好理解,见英语不好,读不懂英文数学教材怎么办?不过之后我还是会把中文翻译版和英文翻译版都发出来。接着我还发一发Grothendieck的其他著作,包括收获与播种、伽罗华长征、一个纲领的提纲(Esquisse d'un Programme)等。EGA有四系列,为EGA 1-4,但总共分为8册书,EGA 3有两本,EGA 4有四本。由于文件较大,我分成两贴将这些东西发完。本贴先发EGA 1-3,需要下载 ...

将反向传递看成函子:强化学习的一个复合视角

这篇文章是数学家与计算机科学家合作写的,将范畴论应用于人工智能的强化学习。本文表示,强化学习算法与强化学习算法的复合,还是一个强化学习算法,因而所有强化学习算法构成一个范畴$\textrm{Learn}$。然后在$\textrm{Learn}$里考虑神经网络,并证明在一般情况下,梯度下降也是复合的。如果对纯数学理论,在计算机或者AI有什么应用感兴趣的人,可以看看。我当时下这篇文章,也是好奇代数领域在AI方面有啥应用,其实当时已经知道有个叫热带几何(Tropical Geometry)的领域,就是代数几何在计算机的应用。因为当时AI就很火,但AI可解释性需要很多数学来解决,他们解决不了,所以我留着这篇文章也是打算之后写篇类似的AI应用的文章。

把加法与乘法结构拆掉再复原?望月新一如何引发代数几何变革

据《朝日新闻》,望月新一关于ABC猜想的论文可能将要发表,审核它的期刊是《数理解析研究所公刊》(PRIMS)。媒体对此的报道大抵聚焦在两点上:一是这个期刊就是他的工作单位主办的,一是这个论文几乎无人能懂。作为一个数学研究者,我个人并不担心望月新一的利益冲突问题,不但因为数学界有一套相当完备的系统用以避免利益冲突,在选定编辑和审稿人时有良好的避嫌标准,更重要的是:他没有动机。他已经功成名就,不需要什么文章。数学这种东西,对就对,错就错,不存在编数据或者实验造假,一切细节都在文章里。要是错了,无论强行发表在什么期刊上,也终有一天会被发现,而一发现就无可抵赖,只能重新修补。但是他的理论绝不仅仅是一个“几乎无人能懂”的怪物而已。它所试图解决的根本数学问题,它背后的当代数学界的面貌,它反映出的做数学研究是怎样的状态,这里面还有太多的故事并不是、也不应该是只有几个人能懂。甚至也许可以说,这些故事能让人直观地感受到:现代数学是什么。破题望月新一的研究领域,是所谓的“远阿贝尔几何学”。如果一句话解释这个领域的话,我只能这样写:有理数的绝对伽罗华群,以至任意代数簇的平展基本群,它们“远离阿贝尔”的部分, ...

Tammo Tom Dieck代数拓扑教材

EMS出版的代数拓扑教材Algebraic Topology,作者是Tammo Tom Dieck。本教材相较于Hatcher的书,没有那么太多的插图,并且内容更加抽象。本书知识密度高,内容精炼简洁,没有过多的废话。很适合有一定代数基础,且喜欢直接切入主题,快速学习的人。对于还未入门的小白而言,这本书不太适合作为代数拓扑的入门教材。我高中的时候就在看这本教材,但总在一些地方无法彻底理解。但这本教材吸引我的地方,一是它的内容涵盖面够广,并且知识密度够高,能够让我短时间内掌握代数拓扑方面的基础知识;二是它的描述更加的抽象,并且语句简洁明了、容易理解,很符合我的口味(这也是我当时选择代数几何的原因)。关于本教材与其他代数拓扑教材更具体、更专业的对比,请看Algebraic Topology I: 对教材跟概念的一些论述。PS:作者不再提供附件下载。

望月新一关于abc猜想的天书证明:宇宙际Teichmüller理论

望月新一以及他的Inter-universal Teichmüller Theory(宇宙际Teichmüller理论)可以说是非常出名,相较于费马大定理证明的晦涩难懂,宇宙际Teichmüller理论才算是真正的天书,全世界没几个人能看得懂,就连大佬Faltings都看不懂。望月新一是Faltings的学生,Faltings以“暴力横推”的风格闻名,张寿武说过Faltings的风格就像直接开着推土机把山碾平了过去。并且Faltings看论文都是只看前沿(introduction)就能知道整篇论文的主要定理,甚至还能直接证出来。见望月新一与他天书般的论文,展现了纯数学与我们的距离可见Inter-universal Teichmüller Theory有多难懂,它涉及到代数几何一个高深的领域:远阿贝尔几何(anabelian geometry),顾名思义就是考虑平展基本群$\pi_{1}^{et}(X,x)$远离阿贝尔的部分,远阿贝尔几何源于Grothendick的一封入职信Esquisse d'un Programme,他于其中提出一个宏大的理论,然而最终他却没能将其实现。而望月新一可 ...

Algebraic Topology I: 对教材跟概念的一些论述

关键词:Homotopy, Homology, Groupoid, Foundamental Group, Van Kampen Theorem, Covering Space, Covering Projection, Fibration with unique path lifting, Cofibration.Tammo tom Dieck 在他的代数拓扑教材中写了非常漂亮的前言,在点出代数拓扑精髓的同时还包含一些形而上学的哲思,并且简略地介绍了代数拓扑里面的两个核心词汇,同伦(homotopy) 跟同调 (homology)。我简要地部分翻译如下:代数拓扑是连续数学跟离散数学交相辉映的学科。在连续数学里面,我们用拓扑空间和连续映射这样普遍的形式语言将其公理化。而离散数学则是被我们用来表达代数和组合概念的。在数学语言中,我们用实数来概念化连续形式,但我们建立实数时却是要用到整数。下面举个例子,我们直觉地认为时间是一个连续的没有间断的流动过程,是由一系列不停止的瞬间后继构成的。但在实践中,我们却使用被定义为有周期性的离散模型工具跟自然过程。同样地,我们意识到空间是一个连续体,但我们 ...