DataCloneError:无法克隆对象。 [火狐浏览器]

问题描述 投票:0回答:2

尝试将数据作为对象传输到另一个页面时遇到 DataClone 错误

Crome 浏览器上,我收到以下错误:

DataCloneError:无法在“History”上执行“pushState”:无法克隆 function () { [native code] }。

app.js

const app = () => {
  const profile = useContext(ProfileContext);
  console.log(typeof profile) // object type
  
  const gotoEditPage = () => {
   history.push({
     pathname: '/setting',
     state: {profile}
   })
  }
 return (
  <>
   <button onClick={gotoEditPage}>Next</button>
  </>
 )
}

是否是浏览器特定错误。

reactjs object react-hooks
2个回答
11
投票

DataCloneError 实际上发生是因为我试图在对象中传输 methods。因此,为了避免此错误,只需将对象解析为 JSON,如下所示

const parseData = JSON.parse(JSON.stringify(profile));

现在parseData可以轻松转移到另一个页面。


0
投票

就我而言,当我尝试在调用 postMessage 中传递回调时遇到了这个问题:

window.postMessage({cb: () => null})

我不知道这是不可能的。错误消息没有太大帮助。

© www.soinside.com 2019 - 2024. All rights reserved.