亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Reactjs 實時禁用按鈕 onclick

Reactjs 實時禁用按鈕 onclick

慕的地6264312 2023-07-20 09:45:36
我的項目中有以下代碼,我需要在實時單擊時禁用 wislist 按鈕。我能夠禁用它,但在重新加載頁面后它被禁用。我需要在單擊按鈕后立即執行此操作。這是我的js  const talProps = useAddWishlistItem({        childSku: item.sku,        sku: item.sku,        query: WishlistPageOperations,        mutation: wishlistItemOperations,        product    });    const {        handleAddToWishlist,        isAddToCartDisabled,        hasError,        isItemAdded    } = talProps;這是我的按鈕    <Button                    className={classes.btnWishlist}                    onClick={handleAddToWishlist}                    disabled={isItemAdded}>                    <img className={classes.WishlistIcon} src={WishlistIcon}/>                </Button>isItemAdded 從 useAddWishlistItem 返回。useAddWishlistItem.jsexport const useAddWishlistItem = props => {    const {mutation, query, product} = props;    const {mutations} = mutation;    const {addProductToWishlist} = mutations;    const {queries} = query;    const {getCustomerDetails} = queries;    const productType = product.__typename;    const [quantity] = useState(INITIAL_QUANTITY);    const {data, err, load} = useQuery(getCustomerDetails);    let wishListId;    if (data) {        const {customer} = data;        const {wishlist} = customer;        wishListId = wishlist.id;    }    const getIsItemAdded = (product) =>{        for (let i=0; i< data.customer.wishlist.items.length;i++){            if (data.customer.wishlist.items[i].product.url_key === product.url_key){                return  true;            }        }    }    const [addItemsToWishlist, { error, loading:isAddSimpleLoading }] = useMutation(addProductToWishlist);    const handleAddToWishlist = useCallback(async () => {        const payload = {            item: product,            productType,            quantity        };
查看完整描述

1 回答

?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

isItemAdded僅當且僅當發生更改時才會重新計算product。還應該考慮是否data通過將其添加為 中的依賴項而發生更改useMemo()。


const getIsItemAdded = (product, data) => {

  for (let i=0; i< data.customer.wishlist.items.length;i++){

    if (data.customer.wishlist.items[i].product.url_key === product.url_key){

      return true;

    }

  }

  return false;

}


const isItemAdded = useMemo(

  () => getIsItemAdded(product, data),

  [product, data] // add data

)


查看完整回答
反對 回復 2023-07-20
  • 1 回答
  • 0 關注
  • 207 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號