Я визуализирую компонент react-ace
с помощью annotations
следующим образом:
<ReactAce
mode={'javascript'}
// ...
annotations={[{row: 0, column: 0, type: 'error', text: 'Some error.'}]}
/>
Аннотации, добавленные вручную, появятся на короткое время, а затем будут удалены после запуска воркера.
Эта гифка показывает обновление страницы. При каждой загрузке страницы аннотация появляется, но затем удаляется.
Я отключил воркера с помощью setOptions={{useWorker: false}}
, но это также отключает аннотации, сделанные вручную.
Спасибо!
Я чувствую, что должно быть 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}
/>
}
Самый полезный комментарий
Вместо того, чтобы использовать опору
annotations
, я вручнуюsetAnnotations
.