import { useEffect, useMemo } from 'react'; import { Fragment } from 'react' import { getAllProducts } from '../api/product'; import { useDispatch, useSelector } from 'react-redux'; import { fetchProduct, setShowStock, setFilterName } from '../store/slice/productSlice'; function Product() { const dispatch = useDispatch(); useEffect(() => { dispatch(fetchProduct()) }, [dispatch]) const { products, filterName, showStock } = useSelector(x => x.productSlice); const filterProducts = useMemo(() => { return products.filter(item => item.name.includes(filterName) && (showStock ? item.stocked : true)) }, [products, filterName, showStock]) const renderProduct = () => { let prevCategory = '' return filterProducts.map((product, index) => { const showCategoryHeader = prevCategory !== product.category prevCategory = product.category return ( {showCategoryHeader && ( {product.category} )} {product.name} {!product.stocked && ( (ηΌΊθ΄§) )} {product.price} ) }) } return (

πŸ“¦ ε•†ε“εˆ—θ‘¨

dispatch(setFilterName(e.target.value))} style={{ padding: '8px 12px', borderRadius: 6, border: '1px solid #d9d9d9', width: 240 }} />
{filterProducts.length === 0 ? ( ) : ( renderProduct() )}
商品名称 商品价格
πŸ“­ ζš‚ζ— εŒΉι…ε•†ε“
) } export default Product;