当前位置: 首页 > 知识库问答 >
问题:

ReactJS DataCloneError:未能对“历史记录”执行“pushState”:无法克隆MouseEvent对象

齐英耀
2023-03-14

我试图做我的第一个ReactApp,我得到了DataCloneError错误。

我有以下代码:

postsToShow.map((post, id)=>
   <ul key={id}>
        {post.title}
        <button onClick={(post)=>showPost(post)}>Show post</button>
    </ul>
    )

我想在单击按钮时触发方法showPost。

这是 showPost 方法:

  const showPost=(post)=>
{
    history.push({
        pathname: '/showCurrentPost',
        state: {post: post}
    })}

我得到了这个错误DataCloneError:对“History”执行“pushState”失败:MouseEvent对象不能被克隆,我不知道如何修复它。

如果您能帮助我,我将不胜感激。

共有2个答案

邰建业
2023-03-14

你所要做的就是移除/重命名匿名函数posts中的参数

ToShow.map((post, id)=>
   <ul key={id}>
        {post.title}
        <button onClick={(e)=>showPost(post)}>Show post</button>
    </ul>
    )

您正在将呈现函数范围中的post从原始post重命名为synteticEventHandler。

锺离赤岩
2023-03-14

在这种情况下,您甚至不打算存储事件,因此可以像这样修复代码:

<button onClick={(ev)=>showPost(post)}>Show post</button>

这样,您就不会从封闭范围中隐藏post变量,也不会将其替换为事件对象。

 类似资料:
  • 我正在使用“< code>fancy box”,并试图将我的url更改为< br > fancy box 的url,因此我尝试使用< code>History.pushState()。< br >但它会导致错误< br >错误: 我会搜索它,但没有找到答案,请帮助我 或为我提供更好的解决方案 (我发现:Javascript history.PushState不起作用?但从答案中我不明白我的代码有什

  • 我正在使用<code>窗口。JavascriptMVC应用程序中的历史记录,为每个控制器启用后退/前进/刷新功能。每次加载新控制器时,我都在使用<code>window.history。按下状态,将新状态添加到历史记录中。然后在返回/刷新时,我使用保存的状态并重用数据来再次构建控制器。 除了一个特定场景的问题外,整个想法都很好。我得到以下错误: 未能执行“pushState”“历史”:一个obj

  • 问题内容: 关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 5年前关闭。 我正在研究使用HTML5历史记录API解决与AJAX加载的内容的深层链接问题,但我正在努力下手。有谁知道任何好的资源吗? 我想使用此方法,因为这似乎是允许发送那些链接可能未打开JS的可能性的好方法。当使用JS的人向不使用JS的人发送链接时,许

  • 读取播放历史信息 调用地址 http://api.bilibili.cn/history 返回 返回值字段 字段类型 字段说明 results int 返回的记录总数目 list object 返回数据 返回字段 “list” 子项 返回值字段 字段类型 字段说明 aid int 视频编号 typeid int 视频分类ID typename string 视频分类名称 title string

  • 历史记录 控制台维护 Elasticsearch 成功执行的最后500个请求列表。点击窗口右上角的时钟图标即可查看历史记录。这个图标会打开历史记录面板,您可以在其中查看历史请求。您也可以在这里选择一个请求,它将被添加到编辑器中当前光标所在的位置。 图 9. 历史记录面板

  • 3.3.1.1. 同步的文件历史记录 微力同步记录对文件的添加,修改、删除的操作记录,通过历史记录列表可查看时间时间及发生设备,如下: 事件时间,显示添加、修改、删除等操作发生的时间; 文件时间,显示该文件的最后修改时间; 操作类型,显示此次针对该文件所进行的操作的类型; 发生设备,显示进行此操作的设备名称; 目录,显示该文件所属同步目录; 清空历史记录,点击后可清除所有记录,此操作仅清除记录而已