人民币符号

人民币符号用 ¥

  1. <span class="new_price">&yen;</span>

axios的get方法传递query string

axios使用get方法发送请求时,可以直接在url传递query string参数

  1. axios.get('/user?ID=12345')

也可以使用params传递

  1. axios.get('/user', {
  2. params: {
  3. ID: 12345
  4. }
  5. })

修改封装的get方法

修改封装get方法,使其能够传递params

  1. const get = async (url: string, params:any = {}) => {
  2. const response = await instance.get(url, {
  3. params
  4. })
  5. return response.data
  6. }

api/shop/fastmock商品列表

通过 /api/shop/:id/products?tab=all 形式的api请求对应对应店铺对应种类的商品列表
tab 可取的值有 all, seckill, fruit 等, 通过 _req.query.tab 获得传入的参数
mock数据如下:

  1. {
  2. "code": "0000",
  3. "data": function({_req, Mock}) {
  4. let id = _req.params.id;
  5. let tab = _req.query.tab;
  6. if (id === '1') {
  7. if (tab === 'all') {
  8. return [
  9. {
  10. _id: 1,
  11. name: '番茄250g/份',
  12. imgUrl: 'xxx.png',
  13. sales: 10,
  14. price: 33.6,
  15. oldPrice: 39.6
  16. },
  17. ]
  18. } else if (tab === 'seckill') {
  19. // ...
  20. } else if (tab === 'fruit'){
  21. // ...
  22. }
  23. }
  24. },
  25. "desc": "成功"
  26. }

watchEffect妙用

使用watchEffect监听tab的变化,重新获取产品数据,注意,watchEffect侦听的必须时 ref 值

  1. const useGetProductsEffect = (checkedTab) => {
  2. const products = ref([])
  3. const route = useRoute()
  4. const getProducts = async () => {
  5. const result = await get(`/api/shop/${route.params.id}/products`, {tab: checkedTab.value})
  6. products.value = result.data
  7. }
  8. // 当checkedTab.value变化时,重新获取数据
  9. watchEffect(() => getProducts())
  10. return {
  11. products
  12. }
  13. }
  14. const useCheckTabEffect = () => {
  15. const checkedTab = ref(CATEGORIES[0].tab)
  16. const handleTabClick = (tab:string) => {
  17. checkedTab.value = tab
  18. }
  19. return {
  20. checkedTab,
  21. handleTabClick
  22. }
  23. }
  24. export default {
  25. components: { Icon },
  26. setup(){
  27. const {checkedTab, handleTabClick} = useCheckTabEffect()
  28. const {products} = useGetProductsEffect(checkedTab)
  29. return {
  30. products,
  31. CATEGORIES,
  32. checkedTab,
  33. handleTabClick
  34. }
  35. }
  36. }