Recientemente comencé a jugar con CM6 y me quedé atascado en un componente de reacción que contiene pestañas, cada una de las cuales apunta a texto/código por separado. Al hacer clic en la pestaña, restablecí el estado de CM6. En el inicio del componente, registro un detector de eventos a través de:
extensions.unshift(EditorView.updateListener.of(onUpdate))Ahora, después de que un usuario haga clic en una pestaña/archivo diferente, restablezco el editor a través de:
view?.setState( EditorState.create({ doc: resetValue, selection, extensions: [mySetup, EditorView.updateListener.of(onUpdate)], }), Reinicié ya que no quiero mezclar el historial entre los diferentes "archivos". Después del reinicio, no puedo hacer que onUpdate se active con el contexto adecuado. Siempre apunta al original. En otras palabras, cualquier valor en la definición de onUpdate fuera de ese controlador no está actualizado.
Estoy tratando de entender cómo puedo anular el registro de la onUpdate inicial y volver a registrarla en las extensiones al reiniciar. Intenté algo como esto:
view?.dispatch({ effects: StateEffect.reconfigure.of([EditorView.updateListener.of(onUpdate)]), });Cualquier ayuda sería muy apreciada.
Los pasos fueron correctos.
view?.dispatch({ effects: StateEffect.reconfigure.of([EditorView.updateListener.of(<YOUR FN>)]), });Se encargará de la nueva suscripción.
El problema fue un cierre en una de mis funciones.