我最近发现并开始测试create-t3-app作为 NextJS 项目的新基础,因为它负责 TypeScript、trpc、prisma 和 next-auth 等的大量样板设置,因此它会为我节省大量时间时间。虽然这是相关的,但我不认为这是我的问题的根源。我的问题是,我使用带有自动递增用户 ID 的 MySQL 数据库,但包的类型似乎next-auth迫使我使用字符串(DefaultUserinnext-auth/core/types.d.ts和AdapterUserinnext-auth/adapters.d.ts都将 id 类型设置为字符串,并且注释说 UUID)。考虑到我可以扩展支持数字用户 ID 的功能,我将其添加到next-auth.d.ts:
import { DefaultSession, DefaultUser } from 'next-auth'
declare module 'next-auth' {
interface User extends DefaultUser {
id: number;
}
interface Session {
user?: {
id: number;
} & DefaultSession['user'];
}
}
Run Code Online (Sandbox Code Playgroud)
这似乎在大多数地方都有效,除了[...nextauth].ts给我这个错误的地方
输入“字符串|” number” 不可分配给类型“number”。类型“string”不可分配给类型“number”。ts(2322)
就在session.user.id = user.id这一段代码中
export const authOptions: NextAuthOptions = {
// Include …Run Code Online (Sandbox Code Playgroud) 长话短说,我正在做一个项目,我想让内容“填充”静态标题下方的垂直空间。我在 React 中使用顺风完成了这样的操作:
<body class="flex flex-col h-screen text-gray-600 work-sans leading-normal text-base tracking-normal">
<header class="flex h-18 bg-white shadow-md">
{/* header menu options */}
</header>
<div class="flex flex-1 h-full bg-gray-200 p-6">
{/* page content */}
</div>
Run Code Online (Sandbox Code Playgroud)
但是对于 NextJS,它似乎将安装 div(即<div id="__next">)放在正文和内容的 wrest 之间。如果我修改 CSS 以提供#__next { height: %100 }但使填充无法正常工作,它会溢出。所以它看起来像这样:
<body class="flex flex-col h-screen text-gray-600 work-sans leading-normal text-base tracking-normal">
<div id="__next">
<header class="flex h-18 bg-white shadow-md">
{/* header menu options */}
</header>
<div class="flex flex-1 h-full bg-gray-200 p-6">
{/* page …Run Code Online (Sandbox Code Playgroud) 我是 React Js 的初学者。我想在 2 秒后重定向到路径“/event”。
这种方法不起作用:
import React from 'react';
import { getFormData } from '../../../helpers/form';
import { eventCreate } from '../../../actions/EventActions';
import { Redirect } from 'react-router-dom';
import { connect } from 'react-redux';
if (event) {
setTimeout(() => {
return <Redirect to={'/event'} />;
}, 2000);
}
Run Code Online (Sandbox Code Playgroud)
但如果我把它改成:
if (event) {
return <Redirect to={'/event'} />;
}
Run Code Online (Sandbox Code Playgroud)
它工作完美。2秒后如何重定向?