【问题标题】:Keystone 6, redirect after saveKeystone 6,保存后重定向
【发布时间】:2022-10-13 14:41:11
【问题描述】:
我正在使用keystone6,我尝试了几天来找到一种在保存或更新操作后重定向的方法。使用带有 useNavigate() 的钩子它不起作用或者我没有正确使用它。
hooks: {
afterOperation: ({ operation, item }) => {
if (operation === 'create') {
console.log('Hook')
const navigate = useNavigate();
navigate('/docview')
}
}
},
有没有办法做到这一点?
【问题讨论】:
标签:
redirect
keystonejs
keystonejs6
【解决方案1】:
进行 GraphQL 查询后可以重定向用户吗?当然。但是你绝对不能在 GraphQL 解析器中使用 React Router 功能。
React 是一个前端框架。虽然您可以在服务器上使用它,但它基本上是用于构建网页的 HTML(和 CSS 等)。当您调用useNavigate() 时,该函数会巧妙地重新呈现网页并更新地址栏中的 URL。它仅适用于非常特定的上下文。
GraphQL 查询、Keystone 的 CRUD 操作以及 Keystone 为您提供的用于增强它们的钩子发生在非常不同的上下文中。它们在您的前端应用程序(或 Keystone Admin UI,例如)进行 API 调用以加载或保存数据时运行。此时您无法“重定向” - GraphQL 是一个数据 API,它不是浏览器导航到的页面。
在您的问题中,尚不清楚您是在尝试更改自己的应用程序的行为还是管理 UI。如果您正在构建自己的前端,您应该能够通过添加在 GraphQL 查询返回时运行的代码来实现您的目标。如果您尝试在管理 UI 中重定向用户,您需要做类似的事情,但可能在 custom page 内。