如何防止 Vuex 干扰我的类实例?

2024-02-28

我试图在 Vuex 中存储一个类的实例(EditorState https://prosemirror.net/docs/ref/#state.EditorState来自散文镜)。这个类从外部来看或多或少是不可变的,这意味着每当我想对其进行更改时,我只需将该类的一个新实例放入 Vuex 中即可。

因此,我在这里不需要 Vue 的更改跟踪,事实上它实际上似乎干扰了 ProseMirror 的内部工作,所以我想知道是否有一种方法可以将我的对象与 Vue 隔离,以便以原子方式处理它。


我通过采纳最佳答案中的建议来解决这个问题这个问题 https://stackoverflow.com/a/44307531/3508956并在将其交给 Vuex 之前冻结我的类实例。

const store = new Store<AppState>({
    state: {
        editor: Object.freeze(editorState), // freeze because Vue reactivity messes it up
        filename: null,
        metadata: {}
    },
    mutations: {
        updateDocument(context, transaction: Transaction) {
            console.log("updateDocument called");

            // freeze again
            context.editor = Object.freeze(context.editor.apply(transaction));
        }
    },
    strict: process.env.NODE_ENV === "development"
});

Since Object.freeze https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze不是递归的,这对 ProseMirror 的内部工作没有任何影响,但它阻止 Vue 尝试修改对象。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何防止 Vuex 干扰我的类实例? 的相关文章

  • 获取 CRM 2011 中功能区按钮的 ID

    我创建了一个 JavaScript 我想在其中隐藏功能区Reactivate Lead按钮取决于某些条件 我通过在表单上按 F12 获得了按钮的 ID 即lead NoRelationship Form Mscrm Form lead Re
  • 如何从 javascript 错误对象读取错误消息

    有人可以帮我解决以下问题吗 我正在通过 redux 操作进行后调用 如下所示 export const addEmployee firstName surname contactNumber email gt async dispatch
  • 续集打字稿多对多关系模型数据

    我正在使用sequelize续集打字稿 https github com RobinBuschmann sequelize typescript图书馆 并试图实现以下关系 Team ts Scopes withPlayers include
  • 如何使传单圆圈标记可拖动?

    使用传单 我创建了一个L circleMarker我希望它是可拖动的 var marker L circleMarker new L LatLng 48 94603 2 25912 draggable true bindPopup Circ
  • CryptoJS 使用密码加密 AES,但 PHP 解密需要密钥

    我在用CryptoJS https code google com p crypto js AES加密字符串 function doHash msg msg String msg var passphrase aggourakia var
  • CSS 内边框?

    我纯粹用 CSS 创建了左侧的按钮 它是一个div 中的一个div 然而 右侧的三个按钮是background属性于img标签 我这样做是为了按照以下说明模拟翻转效果here http kyleschaeffer com best prac
  • 如何用 JavaScript 修复图像透视变形和旋转?

    我有一些用手机拍摄的图像 有没有可以拉直纸张照片并将其压平的 JavaScript 库 例如 我想创建一个矩形图像 该图像没有任何失真 换句话说我想知道如何用 JavaScript 修复透视变形和旋转 例如 我发现下面的示例图像来自this
  • setTimeout范围问题

    我在控制玩家重生的函数内部定义了一个 setTimeout 我正在创建一个游戏 var player death function this alive false Console log death var timer3 setTimeo
  • Angular 2 将字符串转换为 md5 哈希

    我找到了ts md5 https www npmjs com package ts md5包 但在示例中它有一个hashStr方法 但现在不行了 类型上不存在属性 hashStr Md5 使用该错误后 该错误会记录在我的控制台中 我怎样才能
  • 如何使用 TypeScript 接口输入 Vue 提示 props?

    这件事真的让我的头撞到了墙上 我记得在 Angular 工作时 TS 接口可用于输入提示参数 我想对 Vue 中的 props 做同样的事情 有任何想法吗 代码如下 但仅针对标准对象进行检查 因此传入任何对象都是有效的 import Vue
  • 让 Jest 全局设置和全局拆卸在 TypeScript 项目中工作

    我想运行一个在运行测试之前打开数据库连接的函数 全局设置 以及另一个在运行测试后关闭数据库连接的函数 全局拆卸 目前我有以下配置 包 json jest testEnvironment node globalSetup src jest g
  • 如何使用 NextJS 使用自托管字体face?

    使用 NextJS 的字体 我已经阅读了有关如何在 NextJS 中使用自托管字体的不同主题 我得到了什么 wait compiling 当我这样做时 font face font family montserrat src url myp
  • 检查浏览器空闲的替代方法

    我有一个简单的网络信息亭 在鼠标未使用 jQuery 移动 30 秒后显示用户操作提示 var i null body wrap mousemove function clearTimeout i overlay fadeOut i set
  • 为什么我的 D3 SVG 图上的轴不会更新?

    I have 简单的 D3 散点图 http www raxacoricofallapatorius com test scattertest html我在显示数据的几个不同属性之间切换 但是虽然我可以更改数据点 并按照我想要的方式进行转换
  • Javascript等待/异步执行顺序

    所以我试图把我的头脑集中在 Promise await async 上 我不明白为什么当 go 执行时 带有 finished 的警报会紧随 console log coffee 之后 当所有函数都使用等待 承诺时 为什么它只等待 getC
  • 如何将数据推送到嵌套对象

    如何将另一个元素推入variables来自以下对象的属性 var request name Name id 3 rules name Rule name tags tagId 1 variables variable var1 matchT
  • ‘state’未定义 no-undef

    我使用教程来学习 React 但我很快就陷入困境 在教程中 他们使用以下代码 import React Component from react class Counter extends Component state count 0 r
  • highchart堆积柱每个类别的总数据

    我想获取每个类别的总数据 这point stackTotal只给出活动数据的总数 从我粘贴的代码示例中 我想知道每种水果的总消耗量 因此 即使我单击右上角图例上的乔的名字 这使得堆叠图表上的所有乔信息都处于非活动状态 我仍然可以知道约翰 简
  • Array.of 与“[ ]”。何时使用 Array.of 而不是“[ ]”?

    当我发现时我正在读一些书Array of https developer mozilla org en docs Web JavaScript Reference Global Objects Array of 根据 MDN Array o
  • javascript:完全删除top.location.hash?

    如果我的地址栏中已经有一个哈希值 例如domain com whatever 我打电话 top location hash wathever 被转换为domain com 没有任何内容 是否可以完全删除哈希值 所以没有 left 因为如果我

随机推荐

  • 全关联缓存是否比直接映射缓存具有更高的未命中率?

    以下是一个面试问题 为什么全关联缓存的未命中率可能高于直接映射缓存 我认为这根本不可能 有人可以分享一些对此的见解吗 你应该假设它们大小相同吗 如果不是 则如果大多数未命中是 容量 未命中 而不是冲突未命中 则较小的全关联高速缓存仍然可能会
  • 如何让MySQL正确处理UTF-8

    的回应之一我昨天问的一个问题 https stackoverflow com questions 198721 converting a word document into usable html in php建议我确保我的数据库可以正确
  • 更新反应组件而没有父组件在其之外

    如果组件没有父组件 我应该如何正确更新组件 我找到了两种方法来做到这一点 第一种方法 https jsfiddle net 69z2wepo 28597 这里我通过改变组件的状态来更新组件 var Hello React createCla
  • 捕获无法处理的异常并重新加注

    这是我的问题的后续使用 SQLAlchemy 和多处理挂入 Python 脚本 https stackoverflow com questions 8785899 hang in python script using sqlalchemy
  • jquery 附加到列表的前面/顶部

    我有这个无序列表 ul li two li li three li ul 有没有办法可以将其添加到无序列表中 使其最终像这样 ul li ONE li li two li li three li ul 请注意 ONE 已添加到列表的前面 顶
  • 打开 ViewPager2 到特定位置而不滚动

    我已经用一些视频实现了回收视图 say 10 单击任何项 目都会打开一个viewpager2 which is on some other activity与所有物品and单击的一个 来自recyclerview 显示 之后 用户只能从那里
  • 是否可以让 Visual Studio 索引源代码以改进字符串搜索?

    我经常在 VS2008 中使用字符串搜索功能来构建整个解决方案 有没有办法通过让 VS2008 索引所有源代码和配置文件来提高其搜索速度 类似于 Google 桌面索引文件的方式 这增加了对 VS 解决方案中所有文件的即时全文搜索 不是免费
  • 设置 Gin 中未找到的路由

    我在 Gin 中设置了默认路由器和一些路由 router gin Default router POST users save router GET users getAll 但是我该如何处理 Gin 中找不到 404 路线呢 最初 我使用
  • 如何处理 JSF 中的动态角色或用户名更改?

    我有一个在 glassfish 2 1 上运行的 JSF 应用程序 具有 EJB 3 后端 对于身份验证 我使用自定义领域 用户使用他在注册时指定的电子邮件地址和密码进行身份验证 一切都运转良好 现在我有两个相关的问题 1 用户可以编辑他的
  • Xcode 4 Preview 2 是否足够稳定,可以用于开发?

    Xcode 4 Preview 2 是否足够稳定 可以用于开发 由于最终版本已经出来 这个线程可以忽略 从我最近看到的情况来看 它相当不稳定 在崩溃之前很难使用它超过几分钟 我当然不会在实际项目中使用它
  • 任务中重新抛出异常 (TPL) 丢失堆栈跟踪

    我有重新抛出异常的代码 当我后来从 task Exception 读取异常时 它的堆栈跟踪指向我重新抛出异常的位置 如我所料 第 n 行而不是第 m 行 为什么会这样呢 TPL 中的错误或更可能是我忽略的东西 当我解决方法时 我可以将异常包
  • Visual Studio Code - 按文件夹对待处理的更改进行分组

    由于某些受支持的扩展 我想摆脱当前的 IDE Jetbrains 并迁移到 Visual Studio Code VS Code 中我只缺少一件事 如果我在源代码管理中有多个文件作为待处理的更改 它们只会显示为平面列表 例如IntelliJ
  • swiftui 如何从详细信息到编辑视图获取核心数据值

    通过使用核心数据构建应用程序来学习 swiftui 陷入AddEdit的Detail到Edit的数据流向问题 从 AddEdit 到 List 以及从 List 到 Detail 的流程都可以 在网上搜索但没有找到有用的信息或者我不明白 这
  • 合并到特定提交

    我创建了一个名为newbranch来自mastergit 中的分支 现在我已经完成了一些工作并想要合并newbranch to master 但是 我做了一些额外的更改newbranch我想合并newbranch直到倒数第四次提交maste
  • 使用 watchOS2 中的 WatchConnectivity 在 iOS 和 WatchOS 之间发送消息

    我看了WWDC2015 看到现在可以在手表上开发原生应用了 这开启了很多功能 我想知道如何在我的 iOS 应用程序和 AppleWatch 应用程序之间发送数据 我看到有一个新的框架叫做WatchConnectivity 我如何使用它以及来
  • pandas 可以在视图或切片上使用替换方法来修改原始数据帧吗?

    我想替换数据框中的某些单元格值 如果它们在一个组内 但如果它们在其他组内则不替换 例如 我创建以下数据框 import pandas as pd df pd DataFrame a 2 3 b 2 3 a 3 3 columns 1st 2
  • Loopback4 中的事务支持吗?

    Loopback4如何支持事务 有没有类似的装饰器 比如 Transaction 我查看了这里的文档https loopback io doc en lb4 Repositories html https loopback io doc e
  • 等宽 Unicode 字体

    谁能告诉我涵盖大部分 unicode 字符的等宽字体吗 如果没有 那么包含大部分欧洲语言字符集的等宽字体 我也在寻找单一空间 丰富的 Unicode 字体 到目前为止 我使用 DejaVu Sans Mono 但我想知道是否有更好的 对我来
  • 当 applicationDidBecomeActive 被调用时如何告诉活动视图控制器?

    我觉得我在这里缺少一个技巧 我只想在调用 applicationDidBecomeActive 时在当前活动视图控制器上调用 viewDidLoad 或 viewDidAppear 这样当应用程序从后台再次启动时 我可以重置一些动画或其他内
  • 如何防止 Vuex 干扰我的类实例?

    我试图在 Vuex 中存储一个类的实例 EditorState https prosemirror net docs ref state EditorState来自散文镜 这个类从外部来看或多或少是不可变的 这意味着每当我想对其进行更改时