2 回答
TA贡献1841条经验 获得超3个赞
您需要在事件处理程序或 useEffect 钩子中执行 React 状态的设置。
在你的代码中发生的事情是这样的:-
1) :- 每次组件重新渲染时都会发生这种赋值,所以我认为用户应该是 React 状态,而不是一个简单的变量。const user = false
2) - 这意味着每当组件呈现时,都会调用,并且状态是根据您的逻辑设置的。现在,由于状态已设置,组件将重新呈现,这将再次触发所有内容,并且循环将继续。要解决这个问题,请像这样做:-<h1> {greetingMessage()} Random Dude!</h1>greetingMessage()useEffect
//Just after your state definitions
useEffect(()=>{
if (user) {
setGreeting("Welcome")
} else {
setGreeting("You dont belong here")
}
},[])
所以你的最终代码可以是这样的:-
function Main() {
const [greeting, setGreeting] = React.useState("Hello")
//Implement the logic for how you want to set this user state
const [user,setUser] = React.useState(false)
useEffect(() => {
if (user) {
setGreeting("Welcome")
} else {
setGreeting("You dont belong here")
}
}, [])
return (
<main role="main" className="col-md-9 ml-sm-auto col-lg-10 px-md-4">
<div className="d-flex flex-wrap flex-md-nowrap pt-2 mt-2 mb-4">
<h1> {greeting} Random Dude!</h1>
</div>
<Cards />
</main>
)
}
我最好的选择是,在你直接进入代码之前,先浏览一次关于钩子的 React 文档。这些会为你清除很多事情:-
https://reactjs.org/docs/hooks-intro.html
TA贡献1828条经验 获得超13个赞
看看这是否有效
import React from 'react'
import Cards from './cards'
function Main() {
const user = false
const [greeting, setGreeting] = React.useState(user ? "Welcome" : "You dont belong here")
return (
<main role="main" className="col-md-9 ml-sm-auto col-lg-10 px-md-4">
<div className="d-flex flex-wrap flex-md-nowrap pt-2 mt-2 mb-4">
<h1> {greeting} Random Dude!</h1>
</div>
<Cards />
</main>
)
}
export default Main
添加回答
举报