1
1
'use client'
2
2
3
3
import { MarketTitle } from "@/component/market/marketTitle" ;
4
- import { useEffect , useState } from "react" ;
4
+ import { useState } from "react" ;
5
5
import { MarketItem } from "@/component/market/marketItem" ;
6
6
import { ProductList , ProductListParam } from "@/server/types" ;
7
7
import { ProductApi } from "@/server/ProductApi" ;
8
8
import { AppWrite } from "@/server/Client" ;
9
9
10
- export default function MarketPlacePage ( ) {
11
- const [ ItemData , setItemData ] = useState < ProductList [ ] > ( [ ] )
12
- const [ Query , setQuery ] = useState < ProductListParam > ( {
10
+ export default function MarketPlacePage ( ) {
11
+ const [ ItemData , setItemData ] = useState < ProductList [ ] > ( [ ] ) ;
12
+ const [ Query , setQuery ] = useState < ProductListParam > ( {
13
13
limit : 50 ,
14
14
page : 1 ,
15
15
order : "created_at" ,
16
16
search : ""
17
- } as ProductListParam
18
- )
17
+ } ) ;
19
18
const [ Tags , setTags ] = useState < string [ ] > ( [ ] ) ;
20
19
const api = new ProductApi ( ) ;
21
- useEffect ( ( ) => {
22
- api
23
- . List (
24
- Query . limit ,
25
- Query . page ,
26
- Query . order ,
27
- Query . search
28
- )
29
- . then ( ( data ) => {
30
- if ( data . status === 200 && data . data ) {
31
- const json : AppWrite < ProductList [ ] > = JSON . parse ( data . data ) ;
32
- if ( json . code === 200 && json . data ) {
33
- setItemData ( json . data )
34
- setTags ( json . data . map ( ( item ) => {
35
- return item . data . type . split ( "," ) . map ( ( tag ) => {
36
- return tag
37
- } )
38
- } ) . flat ( ) )
39
- }
20
+
21
+
22
+
23
+ const InitData = async ( query : ProductListParam ) => {
24
+ try {
25
+ const response = await api . List ( query . limit , query . page , query . order , query . search ) ;
26
+ if ( response . status === 200 && response . data ) {
27
+ const json : AppWrite < ProductList [ ] > = JSON . parse ( response . data ) ;
28
+ if ( json . code === 200 && json . data ) {
29
+ setItemData ( json . data ) ;
30
+ setTags ( json . data . flatMap ( item => item . data . type . split ( "," ) ) ) ;
40
31
}
41
- } )
42
- } , [ Query ] ) ;
32
+ }
33
+ } catch ( error ) {
34
+ console . error ( "Failed to fetch data" , error ) ;
35
+ }
36
+ } ;
37
+
38
+ const setQuerys = ( newQuery : ProductListParam ) => {
39
+ setQuery ( newQuery ) ;
40
+ InitData ( newQuery ) ;
41
+ } ;
42
+ InitData ( Query ) ;
43
+
43
44
return (
44
45
< div className = "market" >
45
- < MarketTitle tags = { Tags } query = { setQuery } />
46
+ < MarketTitle tags = { Tags } query = { setQuerys } value = { Query } />
46
47
< div className = "market-display" >
47
- {
48
- ItemData . map ( ( item , index ) => {
49
- return (
50
- < MarketItem key = { index } data = { item } />
51
- )
52
- } )
53
- }
48
+ { ItemData . map ( ( item , index ) => (
49
+ < MarketItem key = { index + item . data . uid } data = { item } />
50
+ ) ) }
54
51
</ div >
55
52
</ div >
56
- )
53
+ ) ;
57
54
}
0 commit comments