最近,我开始使用CM6,并被困在一个react组件上,该组件包含选项卡,每个选项卡指向单独的文本/代码。在选项卡单击时,我重置CM6状态。在组件的init上,我通过以下方式注册了一个事件侦听器:
extensions.unshift(EditorView.updateListener.of(onUpdate))
现在,在用户单击另一个选项卡/文件后,我通过以下方法重置编辑器:
view?.setState(
EditorState.create({
doc: resetValue,
selection,
extensions: [mySetup, EditorView.updateListener.of(onUpdate)],
}),
我重置,因为我不想混淆历史之间的不同“文件”。复位后,我无法让onUpdate
用适当的上下文触发。它总是指向原著。换句话说,该处理程序之外的onUpdate
定义中的任何值都不是当前值。
我试图了解如何取消初始onUpdate
注册,并在重置后的扩展中再次注册它?我试过这样的方法:
view?.dispatch({
effects: StateEffect.reconfigure.of([EditorView.updateListener.of(onUpdate)]),
});
任何帮助都将不胜感激。
发布于 2022-02-15 14:48:53
步骤是正确的。
view?.dispatch({
effects: StateEffect.reconfigure.of([EditorView.updateListener.of(<YOUR FN>)]),
});
将负责重新订阅。
这个问题结束了我的一项职能。
https://stackoverflow.com/questions/71094333
复制相似问题