🎈 perf(优化商城):

This commit is contained in:
2022-11-29 18:47:12 +08:00
parent 9fa06c5a2c
commit c2ca7f9e4e
14 changed files with 342 additions and 332 deletions
+2 -2
View File
@@ -1,4 +1,4 @@
import { Input, View } from '@tarojs/components'
import { CustomWrapper, Input, View } from '@tarojs/components'
import { memo, useEffect, useMemo, useRef, useState } from 'react'
import Big from 'big.js'
import styles from './index.module.scss'
@@ -109,7 +109,7 @@ const Counter = memo((props: params) => {
-
</View>
<View className={styles.input}>
<Input type='digit' value={String(value.count)} onInput={onInputEven} onBlur={onBluerEven} disabled={disabled} alwaysEmbed={true} cursorSpacing={150} />
<Input type='digit' value={value.count} onInput={onInputEven} onBlur={onBluerEven} disabled={disabled} alwaysEmbed={true} cursorSpacing={150} />
<View className={styles.unit}>{unit}</View>
</View>
<View className={styles.plus} onClick={() => onPlus()}>
@@ -60,8 +60,8 @@ export default memo((props: param) => {
return sale_model != item.sale_mode
}, [item])
return (
<View className={classnames(styles.product_item, model_status && styles.no_product_item_select)} onClick={clickProduct}>
<View className={styles.checkbox} catchMove>
<View className={classnames(styles.product_item, model_status && styles.no_product_item_select)}>
<View className={styles.checkbox}>
<MCheckbox status={item.selected} onSelect={selectCallBack} onClose={colseCallBack} disabled={model_status} />
</View>
<View className={styles.img}>
+14 -7
View File
@@ -5,7 +5,7 @@ import MCheckbox from '@/components/checkbox'
import LoadingCard from '@/components/loadingCard'
import InfiniteScroll from '@/components/infiniteScroll'
import styles from './index.module.scss'
import { useCallback, useEffect, useMemo, useRef, useState } from 'react'
import { useCallback, useEffect, useMemo, useRef, useState, useTransition } from 'react'
import Taro from '@tarojs/taro'
import { alert, goLink } from '@/common/common'
import { GetShoppingCartApi, DelShoppingCartApi, UpdateShoppingCartApi } from '@/api/shopCart'
@@ -45,22 +45,28 @@ export default ({ show = false, onClose, intoStatus = 'shop', default_sale_mode
{ value: 2, title: '散剪', unit: '米', eunit: 'kg', step: 1, digits: 2, minNum: 3, maxNum: 100000, defaultNum: 3 },
]
const [isPending, startTransition] = useTransition()
//切换面料类型
const [selectIndex, setSelectIndex] = useState<saleModeType>(default_sale_mode || 0)
const selectProduct = (index: 0 | 1 | 2) => {
setSelectIndex(index)
}
useEffect(() => {
setSelectIndex(() => default_sale_mode!)
if (!isPending) {
setSelectIndex(() => default_sale_mode!)
}
}, [default_sale_mode])
useEffect(() => {
resetList()
setSelectStatus(true)
startTransition(() => {
resetList()
setSelectStatus(true)
})
}, [selectIndex])
//获取购物车数据数量
const { setShopCount } = useCommonData()
const { getShopCount } = useCommonData()
//获取所有数据数据
const [list, setList] = useState<{ [id: number]: any }>({})
@@ -193,6 +199,7 @@ export default ({ show = false, onClose, intoStatus = 'shop', default_sale_mode
const res = await delShopFetchData({ id: selectIds.current })
if (res.success) {
getShoppingCart()
getShopCount()
Taro.showToast({
title: '成功',
icon: 'success',
@@ -321,8 +328,8 @@ export default ({ show = false, onClose, intoStatus = 'shop', default_sale_mode
})}
</View>
<View className={styles.con}>
{loading && <LoadingCard />}
{!loading && listData?.length > 0 && (
{(loading || isPending) && <LoadingCard />}
{!loading && !isPending && listData?.length > 0 && (
<InfiniteScroll moreStatus={false}>
<View className={styles.product_list}>
{listData?.map((item) => {