Hi Nisala, global.React = React > Can we do above in the parent Widget ( https://www.npmjs.com/package/@wso2-dashboards/widget)? So that the some widget author doesn't need React as a dependency.
On Thu, Feb 15, 2018 at 1:22 PM, Nisala Nanayakkara <nis...@wso2.com> wrote: > Hi Aruna, > > +1 for the approach. We have faced a similar issue in Product SP and > tested the above-mentioned fix in our local environment. It is working fine. > > Thanks, > Nisala > > On Thu, Feb 15, 2018 at 12:04 PM, Aruna Herath <aru...@wso2.com> wrote: > >> Loading multiple copies of React in the same page creates problems >> <https://reactjs.org/warnings/refs-must-have-owner.html#multiple-copies-of-react>, >> such as errors with discriptions like "Element ref was specified as a >> string (myRefName) but no owner was set. You may have multiple copies of >> React loaded." >> >> In our dashboards, we have widgets that can be added by dragging and >> dropping. Since it should be possible to add widgets without building the >> whole app, widgets are bundled separate to the parent app. How ever this >> means react is bundled with both the widget and the parent app. >> >> Adding react as a peerDep doesn't resolve this, as peerDeps only makes >> sense if we add the widget as a dependency of the parent app and build the >> parent app only. >> >> To resolve this something we can do is to export React to the global >> scope and allow widgets to use this global reference to React. So we don't >> have to bundle React with widgets. >> >> To put React into global context in the parent dashboard app we can do, >> >> import React from 'react' >> global.React = React >> >> in the widget to use this global React ref instead of bundling use >> webpack externals <https://webpack.js.org/configuration/externals/>. >> >> webpack config should be, >> >> externals: { >> react: 'React' >> } >> >> Instead of the variable name 'React' we can even use some other name like >> 'CarbonDashboardReactGlobalRef' to avoid possible conflicts. >> >> -- >> Aruna Herath >> Senior Software Engineer | WSO2 >> Mobile: 0711 051 799 | 0774 569 555 >> >> <http://wso2.com/signature> >> >> _______________________________________________ >> Dev mailing list >> Dev@wso2.org >> http://wso2.org/cgi-bin/mailman/listinfo/dev >> >> > > > -- > *Nisala Niroshana Nanayakkara,* > Software Engineer > Mobile | +94 717600022 > WSO2 Inc | http://wso2.com/ > > _______________________________________________ > Dev mailing list > Dev@wso2.org > http://wso2.org/cgi-bin/mailman/listinfo/dev > > -- Sajith Janaprasad Ariyarathna Senior Software Engineer; WSO2, Inc.; http://wso2.com/ <https://wso2.com/signature>
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev