import {useEffect, useState} from "react"; import {Image, Divider, Badge} from "@nutui/nutui-react-taro"; import {ArrowLeft, Headphones, Share, Cart} from "@nutui/icons-react-taro"; import Taro, {useShareAppMessage, useShareTimeline} from "@tarojs/taro"; import {RichText, View} from '@tarojs/components' import {ShopGoods} from "@/api/shop/shopGoods/model"; import {getShopGoods} from "@/api/shop/shopGoods"; import {Swiper} from '@nutui/nutui-react-taro' import {wxParse} from "@/utils/common"; import "./index.scss"; const GoodsDetail = () => { const [goods, setGoods] = useState(null); const [files, setFiles] = useState([]); const router = Taro.getCurrentInstance().router; const goodsId = router?.params?.id; useEffect(() => { if (goodsId) { getShopGoods(Number(goodsId)) .then((res) => { // 处理富文本内容,去掉图片间距 if (res.content) { res.content = wxParse(res.content); } setGoods(res); if (res.files) { const arr = JSON.parse(res.files); arr.length > 0 && setFiles(arr); } }) .catch((error) => { console.error("Failed to fetch goods detail:", error); }); } }, [goodsId]); // 分享给好友 useShareAppMessage(() => { return { title: goods?.name || '精选商品', path: `/shop/goodsDetail/index?id=${goodsId}`, imageUrl: goods?.image, // 分享图片 success: function (res: any) { console.log('分享成功', res); Taro.showToast({ title: '分享成功', icon: 'success', duration: 2000 }); }, fail: function (res: any) { console.log('分享失败', res); Taro.showToast({ title: '分享失败', icon: 'none', duration: 2000 }); } }; }); // 分享到朋友圈 useShareTimeline(() => { return { title: `${goods?.name || '精选商品'} - 云上商店`, path: `/shop/goodsDetail/index?id=${goodsId}`, imageUrl: goods?.image }; }); if (!goods) { return
加载中...
; } return (
Taro.navigateBack()} >
{ files.length > 0 && ( {files.map((item) => ( ))} ) } { files.length == 0 && ( ) }
<>
{goods.price}
已售 {goods.sales}
{goods.name}
{goods.comments}
商品详情
{/*底部购买按钮*/}
Taro.showToast({title: '加入购物车成功', icon: 'success'})}>加入购物车
Taro.navigateTo({url: '/shop/orderConfirm/index'})}>立即购买
); }; export default GoodsDetail;