fix: bug
This commit is contained in:
parent
95dd556ded
commit
f6f28a4cb4
|
|
@ -49,6 +49,8 @@ function groupWorksByDate(works: WorkItem[]): Record<string, WorkItem[]> {
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function SearchWorksResultsScreen() {
|
export default function SearchWorksResultsScreen() {
|
||||||
|
console.log('========== SearchWorksResultsScreen 组件渲染 ==========')
|
||||||
|
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const params = useLocalSearchParams()
|
const params = useLocalSearchParams()
|
||||||
|
|
@ -57,6 +59,8 @@ export default function SearchWorksResultsScreen() {
|
||||||
const [allWorks, setAllWorks] = useState<WorksSearchResult[]>([])
|
const [allWorks, setAllWorks] = useState<WorksSearchResult[]>([])
|
||||||
const [isLoadingMore, setIsLoadingMore] = useState(false)
|
const [isLoadingMore, setIsLoadingMore] = useState(false)
|
||||||
|
|
||||||
|
console.log('========== 当前状态:', { searchText, page, allWorksLength: allWorks.length, isLoadingMore })
|
||||||
|
|
||||||
const categories: Category[] = [
|
const categories: Category[] = [
|
||||||
t('worksList.all') as Category,
|
t('worksList.all') as Category,
|
||||||
t('worksList.pets') as Category,
|
t('worksList.pets') as Category,
|
||||||
|
|
@ -76,29 +80,60 @@ export default function SearchWorksResultsScreen() {
|
||||||
|
|
||||||
// 当搜索关键词或分类变化时,重置页码和累积数据
|
// 当搜索关键词或分类变化时,重置页码和累积数据
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
console.log('[SearchResults] 重置: searchText=', searchText, 'category=', selectedCategory)
|
||||||
setPage(1)
|
setPage(1)
|
||||||
setAllWorks([])
|
setAllWorks([])
|
||||||
}, [searchText, selectedCategory])
|
}, [searchText, selectedCategory])
|
||||||
|
|
||||||
// 累积新数据
|
// 累积新数据
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (works && works.length > 0) {
|
console.log('[SearchResults] works变化:', {
|
||||||
|
worksLength: works?.length,
|
||||||
|
page,
|
||||||
|
allWorksLength: allWorks.length,
|
||||||
|
isLoading,
|
||||||
|
data: data ? { total: data.total, totalPages: data.totalPages } : null
|
||||||
|
})
|
||||||
|
|
||||||
|
if (works) {
|
||||||
|
if (works.length > 0) {
|
||||||
if (page === 1) {
|
if (page === 1) {
|
||||||
|
console.log('[SearchResults] 设置第1页数据')
|
||||||
setAllWorks(works)
|
setAllWorks(works)
|
||||||
} else {
|
} else {
|
||||||
|
console.log('[SearchResults] 追加第', page, '页数据')
|
||||||
setAllWorks((prev) => [...prev, ...works])
|
setAllWorks((prev) => [...prev, ...works])
|
||||||
}
|
}
|
||||||
|
} else if (page === 1) {
|
||||||
|
console.log('[SearchResults] 第1页无结果,清空数据')
|
||||||
|
setAllWorks([])
|
||||||
|
}
|
||||||
setIsLoadingMore(false)
|
setIsLoadingMore(false)
|
||||||
}
|
}
|
||||||
}, [works, page])
|
}, [works])
|
||||||
|
|
||||||
// 加载更多函数
|
// 加载更多函数
|
||||||
const handleLoadMore = () => {
|
const handleLoadMore = () => {
|
||||||
if (isLoading || isLoadingMore || !data) return
|
console.log('[SearchResults] handleLoadMore调用:', {
|
||||||
|
isLoading,
|
||||||
|
isLoadingMore,
|
||||||
|
hasData: !!data,
|
||||||
|
page,
|
||||||
|
totalPages: data?.totalPages
|
||||||
|
})
|
||||||
|
|
||||||
|
if (isLoading || isLoadingMore || !data) {
|
||||||
|
console.log('[SearchResults] 跳过加载: 正在加载或无数据')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// 检查是否还有更多数据
|
// 检查是否还有更多数据
|
||||||
if (page >= data.totalPages) return
|
if (page >= data.totalPages) {
|
||||||
|
console.log('[SearchResults] 跳过加载: 已到最后一页')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('[SearchResults] 开始加载第', page + 1, '页')
|
||||||
setIsLoadingMore(true)
|
setIsLoadingMore(true)
|
||||||
setPage((prev) => prev + 1)
|
setPage((prev) => prev + 1)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
import React from 'react'
|
||||||
|
import { View, Text } from 'react-native'
|
||||||
|
|
||||||
|
export default function TestLogScreen() {
|
||||||
|
console.log('========== TEST LOG SCREEN 渲染了 ==========')
|
||||||
|
console.log('如果你能看到这条日志,说明console.log正常工作')
|
||||||
|
|
||||||
|
return (
|
||||||
|
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
|
||||||
|
<Text>测试日志页面</Text>
|
||||||
|
<Text>请查看控制台是否有日志输出</Text>
|
||||||
|
</View>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
@ -68,13 +68,15 @@ export function useWorksSearch(params: UseWorksSearchParams) {
|
||||||
|
|
||||||
const { keyword, category, page = 1, limit = 20 } = params
|
const { keyword, category, page = 1, limit = 20 } = params
|
||||||
|
|
||||||
const execute = useCallback(async () => {
|
// Auto-execute search when params change
|
||||||
|
useEffect(() => {
|
||||||
|
const execute = async () => {
|
||||||
// Only execute query when keyword has content
|
// Only execute query when keyword has content
|
||||||
const trimmedKeyword = keyword?.trim() || ''
|
const trimmedKeyword = keyword?.trim() || ''
|
||||||
if (!trimmedKeyword) {
|
if (!trimmedKeyword) {
|
||||||
setData(undefined)
|
setData(undefined)
|
||||||
setError(null)
|
setError(null)
|
||||||
return { data: undefined, error: null }
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
setLoading(true)
|
setLoading(true)
|
||||||
|
|
@ -93,6 +95,43 @@ export function useWorksSearch(params: UseWorksSearchParams) {
|
||||||
await templateGeneration.list(apiParams)
|
await templateGeneration.list(apiParams)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (err) {
|
||||||
|
setError(err)
|
||||||
|
setLoading(false)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
setData(result as WorksSearchResponse)
|
||||||
|
setLoading(false)
|
||||||
|
}
|
||||||
|
|
||||||
|
execute()
|
||||||
|
}, [keyword, category, page, limit])
|
||||||
|
|
||||||
|
const refetch = useCallback(() => {
|
||||||
|
const execute = async () => {
|
||||||
|
const trimmedKeyword = keyword?.trim() || ''
|
||||||
|
if (!trimmedKeyword) {
|
||||||
|
setData(undefined)
|
||||||
|
setError(null)
|
||||||
|
return { data: undefined, error: null }
|
||||||
|
}
|
||||||
|
|
||||||
|
setLoading(true)
|
||||||
|
setError(null)
|
||||||
|
|
||||||
|
const apiParams = {
|
||||||
|
keyword: trimmedKeyword,
|
||||||
|
...(category && category !== '全部' && { category }),
|
||||||
|
page,
|
||||||
|
limit,
|
||||||
|
}
|
||||||
|
|
||||||
|
const templateGeneration = root.get(TemplateGenerationController)
|
||||||
|
const { data: result, error: err } = await handleError(async () =>
|
||||||
|
await templateGeneration.list(apiParams)
|
||||||
|
)
|
||||||
|
|
||||||
if (err) {
|
if (err) {
|
||||||
setError(err)
|
setError(err)
|
||||||
setLoading(false)
|
setLoading(false)
|
||||||
|
|
@ -102,16 +141,10 @@ export function useWorksSearch(params: UseWorksSearchParams) {
|
||||||
setData(result as WorksSearchResponse)
|
setData(result as WorksSearchResponse)
|
||||||
setLoading(false)
|
setLoading(false)
|
||||||
return { data: result as WorksSearchResponse, error: null }
|
return { data: result as WorksSearchResponse, error: null }
|
||||||
}, [keyword, category, page, limit])
|
}
|
||||||
|
|
||||||
// Auto-execute search when params change
|
|
||||||
useEffect(() => {
|
|
||||||
execute()
|
|
||||||
}, [execute])
|
|
||||||
|
|
||||||
const refetch = useCallback(() => {
|
|
||||||
return execute()
|
return execute()
|
||||||
}, [execute])
|
}, [keyword, category, page, limit])
|
||||||
|
|
||||||
return {
|
return {
|
||||||
data,
|
data,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue