On Tue, Feb 20, 2018 at 10:18 AM, Nisala Nanayakkara <nis...@wso2.com> wrote:
> Hi Sajith, > > We need to document this (putting React as an external dependency and >> using global.React). Is there any docs ATM? >> > > No. We do not add this to document yet. We need to improve the documents > related "Creating Custom Widgets"[1] with this change. > > [1] - https://docs.wso2.com/display/SP400/Creating+Custom+Widgets > Let's add this to [1] > > > Thanks, > Nisala > > On Tue, Feb 20, 2018 at 10:14 AM, SajithAR Ariyarathna <sajit...@wso2.com> > wrote: > >> >> >> On Tue, Feb 20, 2018 at 9:47 AM, Nisala Nanayakkara <nis...@wso2.com> >> wrote: >> >>> Hi Sajith, >>> >>> No. I think what we are going to do here is to refer the 'React' which >>> is initialized by the dashboard parent app from the widget level. So >>> setting the React in global context(global.React = React) should be >>> done in the Dashboard parent app. >>> >> +1, even better >> >> >>> So that we can refer it from widgets by using 'externals' in the webpack >>> config. >>> >> We need to document this (putting React as an external dependency and >> using global.React). Is there any docs ATM? >> >> >>> Thanks, >>> Nisala >>> >>> On Tue, Feb 20, 2018 at 9:09 AM, SajithAR Ariyarathna <sajit...@wso2.com >>> > wrote: >>> >>>> 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> >>>> >>> >>> >>> >>> -- >>> *Nisala Niroshana Nanayakkara,* >>> Software Engineer >>> Mobile | +94 717600022 >>> WSO2 Inc | http://wso2.com/ >>> >> >> >> >> -- >> Sajith Janaprasad Ariyarathna >> Senior Software Engineer; WSO2, Inc.; http://wso2.com/ >> <https://wso2.com/signature> >> > > > > -- > *Nisala Niroshana Nanayakkara,* > Software Engineer > Mobile | +94 717600022 > WSO2 Inc | http://wso2.com/ > -- 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