Я работаю над передней панелью администратора. Это позволяет редактировать каждый элемент/виджет на сайте.
Существует панель администратора, которая подключена к Redux и из которой вы можете активировать издание. Когда вы нажимаете на кнопку редактирования, появляются рендеры EditModeButton, которые добавляются к каждому элементу div/виджету, имеющему класс CSS button-edit-quick-normal на странице. Пожалуйста, смотрите код ниже.
enableEditMode = () => {
//Catch all of div/widget with class .button-edit-quick-normal
let buttonEditQuickNormal = [...document.querySelectorAll('.button-edit-quick-normal')];
//loop through array of DOM elements and render new react component
buttonEditQuickNormal.map(domContainer => {
ReactDOM.render(<EditModeButton
menuType = {'quick-normal'}
handleSingleMenuActivated = {this.handleSingleMenuActivated}
singleMenuActivated = {this.state.singleMenuActivated}
/>, domContainer);
});
}
Мой провайдер выглядит так:
import { BrowserRouter, Route, Link, Switch } from 'react-router-dom';
// import ThemeApp from 'SBAppsThemes/ThemeApp';
import { SiteEditorPortal } from './index_sitebuilder';
import { AdminbarPortal } from './index_adminbar';
const store = createStore(AppReducer, compose(applyMiddleware(thunk), window.devToolsExtension ? window.devToolsExtension() : f => f));
ReactDOM.render(
<Provider store = {store}>
<React.Fragment>
<AdminbarPortal />
<SiteEditorPortal />
</React.Fragment>
</Provider>,
document.getElementById('root-react-portals'));
А вот Админбар и SiteEidtorProtal ReactDOM.render:
import SiteEditor from 'SBAppsBuilder/containers/SiteEditor';
import ReactDOM from 'react-dom';
import Root from 'SiteBuilder/boot/root';
export const SiteEditorPortal = () => ReactDOM.createPortal(<SiteEditor/>, document.getElementById('root-sitebuilder'))
.
import React from 'react';
import ReactDOM from 'react-dom';
import Adminbar from 'SBAppsAdminbar/Adminbar';
export const AdminbarPortal = () => ReactDOM.createPortal(<Adminbar />, document.getElementById('root'))
Мой вопрос: как добавить динамически созданные компоненты в хранилище избыточности?
пс. Я уже подключался к отдельному компоненту ReactDOM.render через React Portals, но в этом случае они создаются динамически.
@ h1b9b Я просто добавляю, как выглядит Provider и как я сделал портал для двух компонентов.
@ h1b9b любая идея
на самом деле, я не понимаю вопроса, вы хотите добавить компонент в свой магазин редуксов? неужели нельзя просто отправить компонент в действие и сохранить его с помощью редуктора?
потому что в коде, которым вы поделились, я не вижу, какой компонент вы хотите сохранить и когда, поэтому я не могу помочь, не понимая проблему
что касается провайдера, я вижу, что он поглощает оба ваших компонента, поэтому они должны иметь доступ к хранилищу



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Где ваш провайдер?