В рамках текущей рабочей задачи у меня был кейс - вызвать модалку, созданную как React-компонент, из SharePoint Ribbon. Короче говоря, SharePoint ribbon - это структура, которая содержит кнопки и привязанные к ним js-функции. Когда ты нажимаешь кнопку, вызывается привязанная к ней js-функция... надеюсь, ты понимаешь :). И я начал гуглить: как взаимодействовать с react-модулем из внешнего js, как изменить react-стейт из внешнего js, как форсировать ре-рендер react-компонента из чистого js и так далее... Так вот, основная проблема в том, что нельзя привязать функцию react-компонента к кнопке ribbon, потому что она спрятана глубоко внутри webpack js-бандла. Также мне нужно было менять стейт React-модуля, потому что я хотел ре-рендерить компонент по клику на кнопку. Поэтому я сделал fiddle, и, похоже, всё работает корректно - https://jsfiddle.net/o6ujb5g2/. Это не SharePoint ribbon, но почти то же самое. Идея в том, чтобы прикрепить функцию из react-модалки к глобальному объекту window. Этот объект существует практически везде.
Шаги:
Я создал функцию-заглушку на чистом js для window.func, которую хочу переопределить из компонента (это для подстраховки, если с рендером компонента что-то пойдёт не так)
В компоненте я инициализирую функцию с бизнес-логикой, которая меняет стейт компонента
В componentDidMount я переопределяю глобальную window.func на module.func
Практическое руководство по настройке и использованию i18n для локализации React.js-приложений, с примерами кода, советами по конфигурации и лучшими практиками.
Пошаговое руководство по настройке Storybook в твоём React.js-проекте, включая советы по конфигурации, примеры кода и лучшие практики создания библиотеки компонентов.
Практическое руководство по настройке алиасов путей импорта в проектах на Create React App с помощью CRACO или react-app-rewired, с пошаговыми примерами конфигурации.
Открыт для работы по контракту
Я доступен для работы по контракту. Если у вас есть интересная идея проекта, запишитесь на звонок через Calendly.