@@ -55,13 +55,14 @@ const MEALS_DATA = [
5555]
5656
5757function App ( ) {
58- const [ mealsData ] = useState ( MEALS_DATA )
58+ const [ mealsData , setMealsData ] = useState ( MEALS_DATA )
5959 const [ cartData , setCartData ] = useState ( {
6060 items : [ ] ,
6161 totalPrice : 0 ,
6262 amount : 0
6363 } )
6464
65+ // 添加商品
6566 const addItem = ( item ) => {
6667 let newMeal = { ...cartData }
6768 newMeal . amount ++
@@ -76,6 +77,7 @@ function App () {
7677 setCartData ( newMeal )
7778 }
7879
80+ // 删除商品
7981 const removeItem = ( item ) => {
8082 let newMeal = { ...cartData }
8183 newMeal . totalPrice -= item ?. price
@@ -87,11 +89,36 @@ function App () {
8789 setCartData ( newMeal )
8890 }
8991
92+ // 清空购物车
93+ const clearCart = ( ) => {
94+ let cart = {
95+ items : [ ] ,
96+ amount : 0 ,
97+ totalPrice : 0
98+ }
99+ let meals = [ ...mealsData ]
100+ meals . forEach ( meal => delete meal . count )
101+ setCartData ( cart )
102+ }
103+ 104+ // 搜索
105+ const filterData = ( keyWord ) => {
106+ if ( ! keyWord ) {
107+ setMealsData ( MEALS_DATA )
108+ } else {
109+ 110+ let meals = [ ...MEALS_DATA ]
111+ meals = meals . filter ( meal => meal . title . indexOf ( keyWord ) > - 1 )
112+ // console.log(meals)
113+ setMealsData ( meals )
114+ }
115+ }
116+ 90117 return (
91- < cartContext . Provider value = { { ...cartData , addItem, removeItem } } >
118+ < cartContext . Provider value = { { ...cartData , addItem, removeItem, clearCart } } >
92119 < ConfigProvider theme = { { token : { colorPrimary : '#ffcd00' } } } >
93120 < div style = { { width : '750rem' , height : '100vh' , overflow : 'hidden' , position : 'relative' } } >
94- < Search > </ Search >
121+ < Search filterFn = { filterData } > </ Search >
95122 < Meals meals = { mealsData } > </ Meals >
96123 < Cart > </ Cart >
97124 </ div >
0 commit comments