React-ace: Аннотации вручную удалены работником

Созданный на 2 июл. 2018  ·  5Комментарии  ·  Источник: securingsincity/react-ace

Проблема

Я визуализирую компонент react-ace с помощью annotations следующим образом:

<ReactAce
  mode={'javascript'}
  // ...
  annotations={[{row: 0, column: 0, type: 'error', text: 'Some error.'}]}
/>

Аннотации, добавленные вручную, появятся на короткое время, а затем будут удалены после запуска воркера.
Эта гифка показывает обновление страницы. При каждой загрузке страницы аннотация появляется, но затем удаляется.
annotation

Я отключил воркера с помощью setOptions={{useWorker: false}} , но это также отключает аннотации, сделанные вручную.

Спасибо!

Documentation

Самый полезный комментарий

Вместо того, чтобы использовать опору annotations , я вручную setAnnotations .

const Editor = ({ annotations: customAnnotations = [], value }) => {
  const [annotations, setAnnotations] = useState([]);
  const [editor, setEditor] = useState();

  const nextAnnotations = [
    ...annotations.filter(({ custom }) => !custom),  // annotations by worker
    ...customAnnotations.map((annotation) => ({ ...annotation, custom: true })) // flag for exclusion
  ];

  useEffect(() => {
    if (editor) {
      editor.getSession().setAnnotations(nextAnnotations);
    }
  }, [editor, JSON.stringify(nextAnnotations)]);

  return (
    <ReactAce
      mode="html"
      onLoad={setEditor}
      onValidate={setAnnotations}
      setOptions={{ useWorker: true }}
      value={value}
   />
}

Все 5 Комментарий

Я чувствую, что должно быть 2 набора аннотаций. Аннотации, добавленные вручную и созданные парсером режима. Я думаю, что они сейчас сталкиваются и стирают друг друга ...

да, вот что происходит. Я не уверен, возможно ли, чтобы аннотации существовали вне жизненного цикла рабочего или нет.

Я столкнулся с той же проблемой.
Я хочу иметь возможность добавлять пользовательские аннотации в редактор, сохраняя при этом аннотации, сделанные работником.

После того, как я установил свои собственные аннотации, аннотации рабочего переопределяют мои.
Я видел предложения отключить воркер вот так.

setOptions={{useWorker: false}}

Выполнение этого отключает аннотацию рабочего, поэтому вся моя подсветка линтинга / синтаксиса исчезла. (не совсем то, что я хочу)

Я хочу иметь возможность объединить аннотацию рабочего с моей пользовательской аннотацией.

Может кто-нибудь подсказать, как это сделать?

Привет, у меня похожая ситуация, я не могу добавлять собственные сообщения об ошибках. Любое решение?

Вместо того, чтобы использовать опору annotations , я вручную setAnnotations .

const Editor = ({ annotations: customAnnotations = [], value }) => {
  const [annotations, setAnnotations] = useState([]);
  const [editor, setEditor] = useState();

  const nextAnnotations = [
    ...annotations.filter(({ custom }) => !custom),  // annotations by worker
    ...customAnnotations.map((annotation) => ({ ...annotation, custom: true })) // flag for exclusion
  ];

  useEffect(() => {
    if (editor) {
      editor.getSession().setAnnotations(nextAnnotations);
    }
  }, [editor, JSON.stringify(nextAnnotations)]);

  return (
    <ReactAce
      mode="html"
      onLoad={setEditor}
      onValidate={setAnnotations}
      setOptions={{ useWorker: true }}
      value={value}
   />
}
Была ли эта страница полезной?
0 / 5 - 0 рейтинги