Nextjs创建一个url,它只处理没有视图的代码



我正在使用NextJS创建一个新网站,我遇到的问题是关于密码重置验证端点。

当用户触发密码重置时,它会转到API,进行所有处理,然后将它们返回到/verifyreset的NextJS前端,后者将代码保存到本地存储中,进行少量处理,然后将它们转发到另一个页面。

问题是在我的_app.js中有一个默认的布局包装组件,像这样;

function MyApp({ Component, pageProps }) {
return (
<DefaultLayout><Component {...pageProps} /></DefaultLayout>
);
}

这意味着布局显示在/verifyreset端点上,我只希望该端点处理数据。

有别的办法吗?有一个端点,可以访问本地存储,但不是一个'页',所以说

我确实部分理解了你的问题,如果你在问题中附加更多的代码片段就会清楚了。

无论如何,从你下面的陈述:

当用户触发密码重置时,它会转到API,完成所有操作完成处理,然后返回给NextJS前端/verifyreset,它将代码保存到本地存储,做了一点,然后转发到另一个页面。

我理解的是:

  1. 用户触发密码重置[let say from PageA]
  2. 调用
  3. API;一些处理发生
  4. API,然后,重定向用户到/verifyreset页[让它说PageB]
  5. 导航到页面,信息保存到localstorage
  6. 一旦完成,用户被重定向到另一个页面[让它是PageC]

纠正我,如果我错了,所以你的问题是,你怎么能跳过用户查看/verifyreset页面,但做的事情,如保存到本地存储和其他后台操作。

答:api是从PageA调用的(见1)。而不是api将用户重定向到前端的/verifyreset页面,发送一些数据(JSON或XML)到调用函数(在PageA组件…)。基于该数据,执行处理,完成所有操作后,将用户重定向到PageC。[无需担心PageB,即/verifyreset page]。请查看下面的代码片段:

**API End Point**
async resetPassword(req, res) {
try {
const model = model.body || {};
let data = await PasswordBusiness.reset(model);
//data needs to have information that you require on frontend
return res.json({success: true, data: data});
} catch (error) {
return res.json({success: false, error: error});
}
}

** Frontend - pageA **

import Router from 'next/router';
const resetPassword = (model) => {
callApiEndPoint(model).then(data) {
// do what you want to do with data
//finally navigate to page c
Router.push('url-to-page-c');
});
};

return <button onClick={resetPassword}> Reset </button>

回答2:如果您需要从API重定向到页面(我认为您不需要这样做),一旦操作/处理在API端完成,将用户直接重定向到带有数据的一些查询参数的pageC(如果它们不是易受安全攻击的数据)。例如/pagec?token=sometokens&otherinfos=otherinfos,并在pagec本身执行操作。完成后,从页面中删除查询字符串,而不刷新页面。

你必须把/verifyreset放在api文件夹

Next.js在他们的文档中是这样说的:

Any file inside the folder pages/api is mapped to /api/* and will be treated as an API endpoint instead of a page.

参考:https://nextjs.org/docs/api-routes/introduction

最新更新