и его родитель editor, мне нужно вызвать из родителя метод потомка. Из-за того что там import стоит, не получается создать forwardRef. ЧЯДНТ?
https://github.com/compute-toys/compute.toys/blob/master/components/editor/monaco.tsx
https://github.com/compute-toys/compute.toys/blob/master/components/editor/editor.tsx
не смотрел код, но если просто пропсом прокинуть?
А точно ref нужен? можно же пропс пробросить в дочерний компоннет и этот пропс поставить в зависимости useEffect который будет срабатывать и вызывать нужный метод дочернего компонента
зачем такие костыли, если именно для этих целей сделан реф?
А почему вы решили что это кастыль?
даже не знаю, может то, что ты форсишь обновы диспатчера ради того, что можно сделать почти бесплатно на рефах?)
пример кода бы, пока не особо получается
https://react.dev/reference/react/forwardRef ток в реф записывай нужные тебе функции там ещё проверить нужно, в реф передан RefObject или функция, которая его принимает)
forwardRef ошибки дает, так как дочерний компонент динамический реф внутри еще использует declare type Monaco = typeof import('monaco-editor');
во-первых говорит что ref.current не существует в родительском элементе, после того как я его создал с useRef() и прокинул в пропсы, во-вторых eslint сразу все начинает подсвечивать все красным если завернуть в forwardRef monaco
Надо наверно добавить что я вызываю метод одного потомка (monaco) из другого потомка, в общем классе editor. Вызвать родительскую функцию не составило труда, я просто прокинул метод в пропсы. А вот пробросить метод из родителя в другой уже сложнее, особенно когда там завернуто в import.
в смысле ref.current не существует?) это как?)
Создал его в editor и начал использовать в editorJumpToLine функции, который вызываю из другого компонетнта. https://github.com/compute-toys/compute.toys/pull/34/files
Спасибо, пофиксил. ForwardRef все таки работал, но было более красивым решением вынести бизнеслогику в стейтменеджер.
Обсуждают сегодня