我正在想办法解决这个问题
boilerplate repo, so that on the index page
,我可以为登录用户呈现一个页面,也可以为其他任何人呈现另一个页面。样板索引始终呈现相同的页面,但如果有经过身份验证的用户,则会向其添加额外的位。
目前,当我尝试:
return (
<Box>
<Head>
<title>title</title>
</Head>
<div>
<Limiter pt={20} minH="calc(100vh - 65px)">
<Center flexDir="column">
{!me &&
<Box textStyle='h1' mb={8} mt={8} textAlign="center" >
<HomeLandingPage />
</Box>
}
{me && router.replace("/dashboard")}
</Center>
</Limiter>
</div>
</Box>
)
我在终端中没有收到错误,但在浏览器中收到此错误:
错误:对象作为子对象无效(找到:[对象]
答应我。如果要渲染子对象集合,请使用
而不是数组。
如果我删除第二个条件(即me为true),我可以呈现HomeLandingPage而不会出错,但如果!我是假的。如果我删除了!然后尝试呈现登录的用户页面。当我尝试使用这两个选项时,我会得到相同的错误。
我不知道该把数组放在哪里来处理这个问题。一些关于这个错误的帖子通过将所有内容放在div标签中来解决问题。我正在使用ChakraUI,它将一个div称为一个Box,我正在使用它,但我尝试在主页的每个级别添加额外的div,试图找到一个有效的版本,但没有一个有效。
我试图依赖成功身份验证处理程序上的登录重定向,它有:
const onSubmit = (data: LoginInput) => {
return form.handler(() => login({ variables: { data } }), {
onSuccess: async (data) => {
await fetch("/api/login", {
method: "post",
body: JSON.stringify({ [LOGIN_TOKEN_KEY]: data.login.token }),
})
client.writeQuery<MeQuery>({ query: MeDocument, data: { me: data.login.user } })
router.replace(redirect || "/dashboard")
// router.replace('/dashboard')
// router.replace('/profile/index')
// console.log(redirect, REDIRECT_PATH)
},
})
}
我希望这个处理程序在成功登录时重定向到/dashboard,但事实并非如此。
如果我从索引中删除me处理程序。tsx页面,当我进行身份验证时,我只会得到一个空页面,然后我可以将/dashboard添加到浏览器url,以便在成功进行身份验证时导航到我试图重定向到的页面。
我解决这个问题的第一个问题是,如果我是真的,为什么我不能在主页上重定向。
有什么线索可以启发我下一步的研究方向吗?