gpt4 book ai didi

javascript - 为什么我的 NextJS 代码会运行多次,如何避免?

转载 作者:行者123 更新时间:2023-12-05 04:28:22 34 4
gpt4 key购买 nike

<分区>

我一直在尝试连接我的 Web 应用程序的前端和后端,但我遇到了一个问题,即当用户创建帐户时,会在数据库中为该用户创建多个对象。我使用 console.log 发现我的 NextJS 代码重复。我发现了这个稍微相关的帖子:Component functions runs multiple times react但是,它处理异步调用的问题,我已经通过空/未定义检查解决了这些问题。这是我当前的用户注册码:

const handleUser = async (user) => {
var bUserExists = false

await axios.get(GET_USER(user.email))
.then(response => {
bUserExists = true;
})
.catch(err => {
bUserExists = false
})

if(!bUserExists) {
bUserExists = true;
await axios.post(CREATE_USER(), {
email: user.email,
name: user.name,
}).then(newUser => {
console.log(newUser.data)
if(newUser.data) {
router.push('/form/p1')
}
}).catch(err => {
console.log(err)
})
}
}

const { user, error, isLoading } = useUser();

if(isLoading) return <div>Loading...</div>;
if(error) return <div>{error.message}</div>;
if(user) {
// try to get the user from the database
// if the user doesn't exist, create one
handleUser(user)
}

当我使用此代码创建用户时,我的后端输出如下:

(抱歉,我还没有足够的代表来张贴图片 ;-; ) https://i.gyazo.com/fd83cf9362b0e88977dfb277687ca071.png

很奇怪吧?它重复得如此之快,以至于在第二次调用时甚至还没有创建用户。

我得出的结论是 NextJS 在客户端和服务器上都重复了代码,但我对 Next/React 的了解太少,因此无法非常准确。为什么我的代码(应该只运行一次)运行了多次?

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com