Используйте функцию компонента в svelte

У меня есть компонент CodeMirror на svelte, и мне нужно использовать некоторые функции (объявленные внутри компонента), где я использую codemirror для изменения значения. Например:

export function update(new_value) {

value = new_value;

if (editor) {
  const { left, top } = editor.getScrollInfo();
  editor.setValue((value = new_value));
  editor.scrollTo(left, top);
}


 }

Как я могу импортировать и использовать его там, где я объявляю CodeMirror? Я пытался использовать

 import CodeMirror, {update} from '../../../../components/CodeMirror.svelte';

но не работает


person khalD    schedule 09.12.2020    source источник


Ответы (1)


Поскольку вы экспортируете функцию, вы должны иметь возможность использовать bind: this для вызова функции на экземпляр компонента. Вы должны создать переменную, на которую можно ссылаться в операторе bind:this, а затем вы можете вызвать экспортируемую функцию update для этого компонента:

let codeMirrorComponent;

function someHandler() {
  // may want to check `if (codeMirrorComponent && codeMirrorComponent.update)` to ensure function is available to call
  codeMirrorComponent.update('someValue');
}

<CodeMirror bind:this={codeMirrorComponent} />

Вот REPL в действии.

Надеюсь, это поможет!

person Alexander Staroselsky    schedule 09.12.2020
comment
Я все понимаю и где совершаю ошибки, спасибо! - person khalD; 10.12.2020