我正在按照本
我認為這是因為React.StrictMode開發中useEffect似乎運行了兩次。如果我跑步npm run build并npm start模仿生產,我只會看到一個日歷。
是否還有辦法讓我的日歷在開發中出現一次?
uj5u.com熱心網友回復:
您遇到的問題是您在 useEffect 中的依賴項在新的渲染周期中發生變化,因此 showCalendar 被多次觸發。
要保留您的代碼并且只運行一次,您應該能夠定義變數:
const today = ...
const currentMonth = ...
const currentYear = ...
并從 useEffect 中洗掉依賴項,因為它們不會改變:
showCalendar(currentMonth, currentYear)
}, [])
然而 useEffect 是完全不必要的,而且你的方法很奇怪。
做就是了:
<div ref={calendarBodyRef} className={styles.calendarBody}>
{months.map(month => {
return <div>[...your logic here]<div>
})}
</div>
或者:
const getMonthElement = (month) => {
return <div>[your month logic]<div>
}
...
return(
<div ref={calendarBodyRef} className={styles.calendarBody}>
{months.map(month => {
return <div>[...your logic here]<div>
})}
</div>
)
希望有幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/468679.html
標籤:javascript 反应 打字稿 反应钩子 下一个.js
上一篇:訪問函式型別中的引數型別
