Commit 9d6b33b3 by Liu

fix:空数据出现时机

parent f77c4254
...@@ -43,6 +43,7 @@ function getAnimationProps(delay: number) { ...@@ -43,6 +43,7 @@ function getAnimationProps(delay: number) {
export const Home: React.FC = () => { export const Home: React.FC = () => {
const viteOutputObj = import.meta.env.VITE_OUTPUT_OBJ || 'open' const viteOutputObj = import.meta.env.VITE_OUTPUT_OBJ || 'open'
const [isLoading, setIsLoading] = useState(false) const [isLoading, setIsLoading] = useState(false)
const [isDataLoaded, setIsDataLoaded] = useState(false)
const dispatch = useAppDispatch() const dispatch = useAppDispatch()
const location = useLocation() const location = useLocation()
const hasFetched = useRef(false) const hasFetched = useRef(false)
...@@ -86,6 +87,7 @@ export const Home: React.FC = () => { ...@@ -86,6 +87,7 @@ export const Home: React.FC = () => {
} }
finally { finally {
setIsLoading(false) setIsLoading(false)
setIsDataLoaded(true)
} }
}, []) }, [])
...@@ -117,6 +119,7 @@ export const Home: React.FC = () => { ...@@ -117,6 +119,7 @@ export const Home: React.FC = () => {
...prev, ...prev,
content: [], content: [],
})) }))
setIsDataLoaded(false) // 重置加载状态
try { try {
const res = await fetchEfficiencyQuestionList({ toolId }) const res = await fetchEfficiencyQuestionList({ toolId })
if (res && res.data && res.data.questions) { if (res && res.data && res.data.questions) {
...@@ -129,10 +132,14 @@ export const Home: React.FC = () => { ...@@ -129,10 +132,14 @@ export const Home: React.FC = () => {
catch (error) { catch (error) {
console.error('获取工具相关问题失败:', error) console.error('获取工具相关问题失败:', error)
} }
finally {
setIsDataLoaded(true) // 无论成功失败都标记为已加载
}
} }
else if (!isToolBtn) { else if (!isToolBtn) {
// 当isToolBtn为false时,恢复原始的configType为07的数据 // 当isToolBtn为false时,恢复原始的configType为07的数据
setOtherQuestions(originalOtherQuestions) setOtherQuestions(originalOtherQuestions)
setIsDataLoaded(true) // 恢复原始数据时标记为已加载
} }
}, [originalOtherQuestions]) }, [originalOtherQuestions])
...@@ -239,6 +246,7 @@ export const Home: React.FC = () => { ...@@ -239,6 +246,7 @@ export const Home: React.FC = () => {
title={productQuestions.configName} title={productQuestions.configName}
iconImg={HomeIcon1} iconImg={HomeIcon1}
isToolBtn={isToolBtnActive} isToolBtn={isToolBtnActive}
isLoaded={isDataLoaded}
/> />
</motion.div> </motion.div>
)} )}
...@@ -247,15 +255,16 @@ export const Home: React.FC = () => { ...@@ -247,15 +255,16 @@ export const Home: React.FC = () => {
questions={otherQuestions.content} questions={otherQuestions.content}
dotColor="#CBECFF" dotColor="#CBECFF"
background="linear-gradient(180deg, #F0F8FF 0%, #FFFFFF 50%, #FFFFFF 100%)" background="linear-gradient(180deg, #F0F8FF 0%, #FFFFFF 50%, #FFFFFF 100%)"
height={isToolBtnActive ? '388px' : 'auto'} height={isToolBtnActive ? '288px' : 'auto'}
title={otherQuestions.configName} title={otherQuestions.configName}
iconImg={HomeIcon2} iconImg={HomeIcon2}
isToolBtn={isToolBtnActive} isToolBtn={isToolBtnActive}
isLoaded={isDataLoaded}
/> />
</motion.div> </motion.div>
{isToolBtnActive && ( {isToolBtnActive && (
<div> <div>
<img src={SmartIce} alt="Smart Ice" className="w-[260px] h-[330px] object-contain" /> <img src={SmartIce} alt="Smart Ice" className="w-[260px] h-[330px] mt-[-12px] object-contain" />
</div> </div>
)} )}
</div> </div>
......
...@@ -19,6 +19,7 @@ interface QuestionListProps { ...@@ -19,6 +19,7 @@ interface QuestionListProps {
background: string background: string
height?: string height?: string
isToolBtn?: boolean isToolBtn?: boolean
isLoaded?: boolean
} }
const containerVariants = { const containerVariants = {
hidden: {}, hidden: {},
...@@ -63,8 +64,9 @@ const QuestionListBase: React.FC<QuestionListProps & WithAuthProps> = ({ ...@@ -63,8 +64,9 @@ const QuestionListBase: React.FC<QuestionListProps & WithAuthProps> = ({
title, title,
iconImg, iconImg,
showRefresh = true, showRefresh = true,
displayCount: _displayCount = 8, displayCount: _displayCount = 6,
isToolBtn = false, isToolBtn = false,
isLoaded = false,
}) => { }) => {
const [isRotating, setIsRotating] = useState(false) const [isRotating, setIsRotating] = useState(false)
const [displayedItems, setDisplayedItems] = useState<string[]>([]) const [displayedItems, setDisplayedItems] = useState<string[]>([])
...@@ -72,7 +74,7 @@ const QuestionListBase: React.FC<QuestionListProps & WithAuthProps> = ({ ...@@ -72,7 +74,7 @@ const QuestionListBase: React.FC<QuestionListProps & WithAuthProps> = ({
const dispatch = useAppDispatch() const dispatch = useAppDispatch()
// 根据 isToolBtn 动态设置 displayCount // 根据 isToolBtn 动态设置 displayCount
const actualDisplayCount = isToolBtn ? 8 : 4 const actualDisplayCount = isToolBtn ? 6 : 4
const updateDisplayedItems = useCallback(() => { const updateDisplayedItems = useCallback(() => {
const indices = getRandomIndices(questions.length, Math.min(actualDisplayCount, questions.length)) const indices = getRandomIndices(questions.length, Math.min(actualDisplayCount, questions.length))
...@@ -136,7 +138,7 @@ const QuestionListBase: React.FC<QuestionListProps & WithAuthProps> = ({ ...@@ -136,7 +138,7 @@ const QuestionListBase: React.FC<QuestionListProps & WithAuthProps> = ({
) )
: null} : null}
</h3> </h3>
{questions.length === 0 {isLoaded && questions && questions.length === 0
? ( ? (
<div className="mt-[80px] flex flex-col items-center justify-center h-[200px]"> <div className="mt-[80px] flex flex-col items-center justify-center h-[200px]">
<div className="flex flex-col items-center"> <div className="flex flex-col items-center">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment