如何打开一个新界面?原生window跳转传一个对象类型如何处理?

例如京东商城,每一个商品再打开时候都会创建一个新的界面,这如何实现的呢?

实现

使用window.open(url)

传输对象参数的问题

出现Unexpected token 'p', "product={%"... is not valid JSON
SyntaxError: Unexpected token 'p', "product={%"... is not valid JSON
    at JSON.parse (<anonymous>)
    at ProductPageView (http://localhost:3000/static/js/src_view_Index_Components_ProductPage_js-node_modules_ant-design_icons_es_icons_ShoppingCartO-a12322.chunk.js:58:12) 
    at renderWithHooks (http://localhost:3000/static/js/bundle.js:56123:22) 
    at updateFunctionComponent (http://localhost:3000/static/js/bundle.js:59003:24) 
    at mountLazyComponent (http://localhost:3000/static/js/bundle.js:59312:21) 
    at beginWork (http://localhost:3000/static/js/bundle.js:60708:20) 
    at HTMLUnknownElement.callCallback (http://localhost:3000/static/js/bundle.js:45719:18) 
    at Object.invokeGuardedCallbackDev (http://localhost:3000/static/js/bundle.js:45763:20) 
    at invokeGuardedCallback (http://localhost:3000/static/js/bundle.js:45820:35) 
    at beginWork$1 (h

原因

这是由于通过url中""等这种特殊字符会被转译为其他符号,所以需要通过浏览器url地址里的方法转译回来

解决

例如当前这样的JSON传输的跳转

跳转前

    navigator(`/index/productPage?${JSON.stringify(item)}`)

跳转后

1、slice(1)去掉 ?
2、location.search就是从?开始的内容
3、decodeURIComponent转译url编码
4、最后通过JSON.parse变为对象
  const product = JSON.parse(decodeURIComponent(location.search.slice(1)));

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-11 13:26:09       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-11 13:26:09       101 阅读
  3. 在Django里面运行非项目文件

    2024-05-11 13:26:09       82 阅读
  4. Python语言-面向对象

    2024-05-11 13:26:09       91 阅读

热门阅读

  1. Milvus基本概念

    2024-05-11 13:26:09       28 阅读
  2. [排序算法]基数排序

    2024-05-11 13:26:09       29 阅读
  3. ROS——Action学习

    2024-05-11 13:26:09       24 阅读
  4. vue-video-play使用之播放hls格式视频

    2024-05-11 13:26:09       35 阅读
  5. React 学习-6-列表 & keys

    2024-05-11 13:26:09       28 阅读
  6. Android Activity.FLAG.ACTIVITY_NEW_TASK是什么

    2024-05-11 13:26:09       32 阅读
  7. sklearn框架介绍

    2024-05-11 13:26:09       29 阅读
  8. 如何打造个人IP?

    2024-05-11 13:26:09       30 阅读
  9. 【Golang】判断数组中是否包含指定元素

    2024-05-11 13:26:09       31 阅读