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

Ama*_*hod 5 object reactjs react-hooks

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

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

DataCloneError:无法在“历史记录”上执行“pushState”:无法克隆函数(){[本机代码]}。

应用程序.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>
  </>
 )
}

Run Code Online (Sandbox Code Playgroud)

是否是浏览器特定错误。

Ama*_*hod 7

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

const parseData = JSON.parse(JSON.stringify(profile));
Run Code Online (Sandbox Code Playgroud)

现在parseData可以很容易地转移到另一个页面。