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

2024-05-10 13:44

本文主要是介绍如何打开一个新界面?原生window跳转传一个对象类型如何处理?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

  • 实现
  • 传输对象参数的问题
    • 原因
    • 解决
      • 跳转前
      • 跳转后

实现

使用window.open(url)

传输对象参数的问题

出现Unexpected token 'p', "product={%"... is not valid JSON
SyntaxError: Unexpected token 'p', "product={%"... is not valid JSONat 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)));

这篇关于如何打开一个新界面?原生window跳转传一个对象类型如何处理?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/976604

相关文章

Python+FFmpeg实现视频自动化处理的完整指南

《Python+FFmpeg实现视频自动化处理的完整指南》本文总结了一套在Python中使用subprocess.run调用FFmpeg进行视频自动化处理的解决方案,涵盖了跨平台硬件加速、中间素材处理... 目录一、 跨平台硬件加速:统一接口设计1. 核心映射逻辑2. python 实现代码二、 中间素材处

Go异常处理、泛型和文件操作实例代码

《Go异常处理、泛型和文件操作实例代码》Go语言的异常处理机制与传统的面向对象语言(如Java、C#)所使用的try-catch结构有所不同,它采用了自己独特的设计理念和方法,:本文主要介绍Go异... 目录一:异常处理常见的异常处理向上抛中断程序恢复程序二:泛型泛型函数泛型结构体泛型切片泛型 map三:文

MyBatis中的两种参数传递类型详解(示例代码)

《MyBatis中的两种参数传递类型详解(示例代码)》文章介绍了MyBatis中传递多个参数的两种方式,使用Map和使用@Param注解或封装POJO,Map方式适用于动态、不固定的参数,但可读性和安... 目录✅ android方式一:使用Map<String, Object>✅ 方式二:使用@Param

C# WebAPI的几种返回类型方式

《C#WebAPI的几种返回类型方式》本文主要介绍了C#WebAPI的几种返回类型方式,包括直接返回指定类型、返回IActionResult实例和返回ActionResult,文中通过示例代码介绍的... 目录创建 Controller 和 Model 类在 Action 中返回 指定类型在 Action

SpringSecurity中的跨域问题处理方案

《SpringSecurity中的跨域问题处理方案》本文介绍了跨域资源共享(CORS)技术在JavaEE开发中的应用,详细讲解了CORS的工作原理,包括简单请求和非简单请求的处理方式,本文结合实例代码... 目录1.什么是CORS2.简单请求3.非简单请求4.Spring跨域解决方案4.1.@CrossOr

requests处理token鉴权接口和jsonpath使用方式

《requests处理token鉴权接口和jsonpath使用方式》文章介绍了如何使用requests库进行token鉴权接口的处理,包括登录提取token并保存,还详述了如何使用jsonpath表达... 目录requests处理token鉴权接口和jsonpath使用json数据提取工具总结reques

Apache服务器IP自动跳转域名的问题及解决方案

《Apache服务器IP自动跳转域名的问题及解决方案》本教程将详细介绍如何通过Apache虚拟主机配置实现这一功能,并解决常见问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录​​问题背景​​解决方案​​方法 1:修改 httpd-vhosts.conf(推荐)​​步骤

C# 空值处理运算符??、?. 及其它常用符号

《C#空值处理运算符??、?.及其它常用符号》本文主要介绍了C#空值处理运算符??、?.及其它常用符号,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录一、核心运算符:直接解决空值问题1.??空合并运算符2.?.空条件运算符二、辅助运算符:扩展空值处理

浅析Python中如何处理Socket超时

《浅析Python中如何处理Socket超时》在网络编程中,Socket是实现网络通信的基础,本文将深入探讨Python中如何处理Socket超时,并提供完整的代码示例和最佳实践,希望对大家有所帮助... 目录开篇引言核心要点逐一深入讲解每个要点1. 设置Socket超时2. 处理超时异常3. 使用sele

SpringMVC配置、映射与参数处理​入门案例详解

《SpringMVC配置、映射与参数处理​入门案例详解》文章介绍了SpringMVC框架的基本概念和使用方法,包括如何配置和编写Controller、设置请求映射规则、使用RestFul风格、获取请求... 目录1.SpringMVC概述2.入门案例①导入相关依赖②配置web.XML③配置SpringMVC