Как подключить хранилище Redux к динамически создаваемым компонентам вне root?

Я работаю над передней панелью администратора. Это позволяет редактировать каждый элемент/виджет на сайте.

Существует панель администратора, которая подключена к 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 12.03.2019 14:16

@ h1b9b Я просто добавляю, как выглядит Provider и как я сделал портал для двух компонентов.

Pyot 12.03.2019 19:28

@ h1b9b любая идея

Pyot 13.03.2019 12:18

на самом деле, я не понимаю вопроса, вы хотите добавить компонент в свой магазин редуксов? неужели нельзя просто отправить компонент в действие и сохранить его с помощью редуктора?

h1b9b 13.03.2019 17:53

потому что в коде, которым вы поделились, я не вижу, какой компонент вы хотите сохранить и когда, поэтому я не могу помочь, не понимая проблему

h1b9b 13.03.2019 17:55

что касается провайдера, я вижу, что он поглощает оба ваших компонента, поэтому они должны иметь доступ к хранилищу

h1b9b 13.03.2019 17:56
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
6
350
0

Другие вопросы по теме