mirror of
https://github.com/reduxjs/redux-devtools.git
synced 2025-07-22 14:09:46 +03:00
Use createRoot
This commit is contained in:
parent
ea5e4b06a7
commit
872eef74fa
|
@ -1,5 +1,5 @@
|
||||||
import React, { CSSProperties } from 'react';
|
import React, { CSSProperties } from 'react';
|
||||||
import { render, unmountComponentAtNode } from 'react-dom';
|
import { createRoot, Root } from 'react-dom/client';
|
||||||
import { Provider } from 'react-redux';
|
import { Provider } from 'react-redux';
|
||||||
import { Persistor } from 'redux-persist';
|
import { Persistor } from 'redux-persist';
|
||||||
import { REMOVE_INSTANCE, StoreAction } from '@redux-devtools/app';
|
import { REMOVE_INSTANCE, StoreAction } from '@redux-devtools/app';
|
||||||
|
@ -27,23 +27,21 @@ let naTimeout: NodeJS.Timeout;
|
||||||
|
|
||||||
const isChrome = navigator.userAgent.indexOf('Firefox') === -1;
|
const isChrome = navigator.userAgent.indexOf('Firefox') === -1;
|
||||||
|
|
||||||
function renderDevTools() {
|
function renderDevTools(root: Root) {
|
||||||
const node = document.getElementById('root');
|
root.unmount();
|
||||||
unmountComponentAtNode(node!);
|
|
||||||
clearTimeout(naTimeout);
|
clearTimeout(naTimeout);
|
||||||
({ store, persistor } = configureStore(position, bgConnection));
|
({ store, persistor } = configureStore(position, bgConnection));
|
||||||
render(
|
root.render(
|
||||||
<Provider store={store}>
|
<Provider store={store}>
|
||||||
<PersistGate loading={null} persistor={persistor}>
|
<PersistGate loading={null} persistor={persistor}>
|
||||||
<App position={position} />
|
<App position={position} />
|
||||||
</PersistGate>
|
</PersistGate>
|
||||||
</Provider>,
|
</Provider>
|
||||||
node
|
|
||||||
);
|
);
|
||||||
rendered = true;
|
rendered = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderNA() {
|
function renderNA(root: Root) {
|
||||||
if (rendered === false) return;
|
if (rendered === false) return;
|
||||||
rendered = false;
|
rendered = false;
|
||||||
naTimeout = setTimeout(() => {
|
naTimeout = setTimeout(() => {
|
||||||
|
@ -76,32 +74,31 @@ function renderNA() {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const node = document.getElementById('root');
|
root.unmount();
|
||||||
unmountComponentAtNode(node!);
|
root.render(message);
|
||||||
render(message, node);
|
|
||||||
store = undefined;
|
store = undefined;
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
const node = document.getElementById('root');
|
root.unmount();
|
||||||
unmountComponentAtNode(node!);
|
root.render(message);
|
||||||
render(message, node);
|
|
||||||
store = undefined;
|
store = undefined;
|
||||||
}
|
}
|
||||||
}, 3500);
|
}, 3500);
|
||||||
}
|
}
|
||||||
|
|
||||||
function init(id: number) {
|
function init(id: number) {
|
||||||
renderNA();
|
const root = createRoot(document.getElementById('root')!);
|
||||||
|
renderNA(root);
|
||||||
bgConnection = chrome.runtime.connect({
|
bgConnection = chrome.runtime.connect({
|
||||||
name: id ? id.toString() : undefined,
|
name: id ? id.toString() : undefined,
|
||||||
});
|
});
|
||||||
bgConnection.onMessage.addListener(
|
bgConnection.onMessage.addListener(
|
||||||
<S, A extends Action<unknown>>(message: PanelMessage<S, A>) => {
|
<S, A extends Action<unknown>>(message: PanelMessage<S, A>) => {
|
||||||
if (message.type === 'NA') {
|
if (message.type === 'NA') {
|
||||||
if (message.id === id) renderNA();
|
if (message.id === id) renderNA(root);
|
||||||
else store!.dispatch({ type: REMOVE_INSTANCE, id: message.id });
|
else store!.dispatch({ type: REMOVE_INSTANCE, id: message.id });
|
||||||
} else {
|
} else {
|
||||||
if (!rendered) renderDevTools();
|
if (!rendered) renderDevTools(root);
|
||||||
store!.dispatch(message);
|
store!.dispatch(message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { render } from 'react-dom';
|
import { createRoot } from 'react-dom/client';
|
||||||
import OptionsComponent from './Options';
|
import OptionsComponent from './Options';
|
||||||
import { Options } from './syncOptions';
|
import { Options } from './syncOptions';
|
||||||
|
|
||||||
|
@ -13,10 +13,8 @@ chrome.runtime.getBackgroundPage((background) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
const renderOptions = (options: Options) => {
|
const renderOptions = (options: Options) => {
|
||||||
render(
|
const root = createRoot(document.getElementById('root')!);
|
||||||
<OptionsComponent options={options} saveOption={saveOption} />,
|
root.render(<OptionsComponent options={options} saveOption={saveOption} />);
|
||||||
document.getElementById('root')
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
syncOptions.subscribe(renderOptions);
|
syncOptions.subscribe(renderOptions);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { render } from 'react-dom';
|
import { createRoot } from 'react-dom/client';
|
||||||
import { Provider } from 'react-redux';
|
import { Provider } from 'react-redux';
|
||||||
import { PersistGate } from 'redux-persist/integration/react';
|
import { PersistGate } from 'redux-persist/integration/react';
|
||||||
import { UPDATE_STATE } from '@redux-devtools/app';
|
import { UPDATE_STATE } from '@redux-devtools/app';
|
||||||
|
@ -25,13 +25,13 @@ chrome.runtime.getBackgroundPage((window) => {
|
||||||
bg.onMessage.addListener(update);
|
bg.onMessage.addListener(update);
|
||||||
update();
|
update();
|
||||||
|
|
||||||
render(
|
const root = createRoot(document.getElementById('root')!);
|
||||||
|
root.render(
|
||||||
<Provider store={localStore}>
|
<Provider store={localStore}>
|
||||||
<PersistGate loading={null} persistor={persistor}>
|
<PersistGate loading={null} persistor={persistor}>
|
||||||
<App position={position} />
|
<App position={position} />
|
||||||
</PersistGate>
|
</PersistGate>
|
||||||
</Provider>,
|
</Provider>
|
||||||
document.getElementById('root')
|
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { render } from 'react-dom';
|
import { createRoot } from 'react-dom/client';
|
||||||
import { Root } from '@redux-devtools/app';
|
import { Root } from '@redux-devtools/app';
|
||||||
|
|
||||||
import '../../views/remote.pug';
|
import '../../views/remote.pug';
|
||||||
|
@ -15,7 +15,8 @@ chrome.storage.local.get(
|
||||||
},
|
},
|
||||||
(options) => {
|
(options) => {
|
||||||
const AppAsAny = Root as any;
|
const AppAsAny = Root as any;
|
||||||
render(
|
const root = createRoot(document.getElementById('root')!);
|
||||||
|
root.render(
|
||||||
<AppAsAny
|
<AppAsAny
|
||||||
selectMonitor={options['select-monitor']}
|
selectMonitor={options['select-monitor']}
|
||||||
testTemplates={options['test-templates']}
|
testTemplates={options['test-templates']}
|
||||||
|
@ -30,8 +31,7 @@ chrome.storage.local.get(
|
||||||
}
|
}
|
||||||
: undefined
|
: undefined
|
||||||
}
|
}
|
||||||
/>,
|
/>
|
||||||
document.getElementById('root')
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import ReactDOM from 'react-dom';
|
import ReactDOM from 'react-dom/client';
|
||||||
import App from './App';
|
import App from './App';
|
||||||
|
|
||||||
ReactDOM.render(<App />, document.getElementById('root'));
|
const root = ReactDOM.createRoot(document.getElementById('root')!);
|
||||||
|
root.render(<App />);
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import { render } from 'react-dom';
|
import { createRoot } from 'react-dom/client';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import App from './App';
|
import App from './App';
|
||||||
|
|
||||||
render(<App />, document.getElementById('root'));
|
const root = createRoot(document.getElementById('root')!);
|
||||||
|
root.render(<App />);
|
||||||
|
|
|
@ -16,10 +16,11 @@ Also it's a react component you can use to build amazing monitor applications li
|
||||||
|
|
||||||
```js
|
```js
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import ReactDom from 'react-dom';
|
import ReactDOM from 'react-dom/client';
|
||||||
import { Root } from '@redux-devtools/app';
|
import { Root } from '@redux-devtools/app';
|
||||||
|
|
||||||
ReactDom.render(<Root />, document.getElementById('root'));
|
const root = ReactDOM.createRoot(document.getElementById('root'));
|
||||||
|
root.render(<Root />);
|
||||||
```
|
```
|
||||||
|
|
||||||
### Parameters
|
### Parameters
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { render } from 'react-dom';
|
import { createRoot } from 'react-dom/client';
|
||||||
import { Root } from '../src';
|
import { Root } from '../src';
|
||||||
|
|
||||||
render(<Root />, document.getElementById('root'));
|
const root = createRoot(document.getElementById('root')!);
|
||||||
|
root.render(<Root />);
|
||||||
|
|
||||||
if (module.hot) {
|
if (module.hot) {
|
||||||
// https://github.com/webpack/webpack/issues/418#issuecomment-53398056
|
// https://github.com/webpack/webpack/issues/418#issuecomment-53398056
|
||||||
|
|
|
@ -31,16 +31,15 @@
|
||||||
<script src="/redux-devtools-app.min.js"></script>
|
<script src="/redux-devtools-app.min.js"></script>
|
||||||
<script src="/port.js"></script>
|
<script src="/port.js"></script>
|
||||||
<script>
|
<script>
|
||||||
ReactDOM.render(
|
const container = document.querySelector('#root');
|
||||||
React.createElement(ReduxDevToolsApp, {
|
const element = React.createElement(ReduxDevToolsApp, {
|
||||||
socketOptions: {
|
socketOptions: {
|
||||||
hostname: location.hostname,
|
hostname: location.hostname,
|
||||||
port: reduxDevToolsPort,
|
port: reduxDevToolsPort,
|
||||||
autoReconnect: true,
|
autoReconnect: true,
|
||||||
},
|
},
|
||||||
}),
|
})
|
||||||
document.querySelector('#root')
|
ReactDOM.createRoot(container).render(element);
|
||||||
);
|
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { render } from 'react-dom';
|
import { createRoot } from 'react-dom/client';
|
||||||
import { Container } from '@redux-devtools/ui';
|
import { Container } from '@redux-devtools/ui';
|
||||||
import { Provider } from 'react-redux';
|
import { Provider } from 'react-redux';
|
||||||
import {
|
import {
|
||||||
|
@ -50,7 +50,8 @@ const enhancer = compose(
|
||||||
|
|
||||||
const store = createStore(rootReducer, enhancer);
|
const store = createStore(rootReducer, enhancer);
|
||||||
|
|
||||||
render(
|
const root = createRoot(document.getElementById('root')!);
|
||||||
|
root.render(
|
||||||
<Provider store={store}>
|
<Provider store={store}>
|
||||||
<BrowserRouter>
|
<BrowserRouter>
|
||||||
<Container
|
<Container
|
||||||
|
@ -66,6 +67,5 @@ render(
|
||||||
{!useDevtoolsExtension && <ConnectedDevTools />}
|
{!useDevtoolsExtension && <ConnectedDevTools />}
|
||||||
</Container>
|
</Container>
|
||||||
</BrowserRouter>
|
</BrowserRouter>
|
||||||
</Provider>,
|
</Provider>
|
||||||
document.getElementById('root')
|
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { render } from 'react-dom';
|
import { createRoot } from 'react-dom/client';
|
||||||
import { Provider } from 'react-redux';
|
import { Provider } from 'react-redux';
|
||||||
import {
|
import {
|
||||||
createStore,
|
createStore,
|
||||||
|
@ -49,7 +49,8 @@ const enhancer = compose(
|
||||||
|
|
||||||
const store = createStore(rootReducer, enhancer);
|
const store = createStore(rootReducer, enhancer);
|
||||||
|
|
||||||
render(
|
const root = createRoot(document.getElementById('root')!);
|
||||||
|
root.render(
|
||||||
<Provider store={store}>
|
<Provider store={store}>
|
||||||
<BrowserRouter>
|
<BrowserRouter>
|
||||||
<Routes>
|
<Routes>
|
||||||
|
@ -57,6 +58,5 @@ render(
|
||||||
</Routes>
|
</Routes>
|
||||||
{!useDevtoolsExtension && <ConnectedDevTools />}
|
{!useDevtoolsExtension && <ConnectedDevTools />}
|
||||||
</BrowserRouter>
|
</BrowserRouter>
|
||||||
</Provider>,
|
</Provider>
|
||||||
document.getElementById('root')
|
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import ReactDOM from 'react-dom';
|
import ReactDOM from 'react-dom/client';
|
||||||
import { Provider } from 'react-redux';
|
import { Provider } from 'react-redux';
|
||||||
import { ChakraProvider } from '@chakra-ui/react';
|
import { ChakraProvider } from '@chakra-ui/react';
|
||||||
import './index.css';
|
import './index.css';
|
||||||
|
@ -11,8 +11,8 @@ import { worker } from './mocks/browser';
|
||||||
|
|
||||||
function renderApp() {
|
function renderApp() {
|
||||||
const rootElement = document.getElementById('root');
|
const rootElement = document.getElementById('root');
|
||||||
|
const root = ReactDOM.createRoot(rootElement!);
|
||||||
ReactDOM.render(
|
root.render(
|
||||||
<Provider store={store}>
|
<Provider store={store}>
|
||||||
<ChakraProvider>
|
<ChakraProvider>
|
||||||
<BrowserRouter>
|
<BrowserRouter>
|
||||||
|
@ -20,8 +20,7 @@ function renderApp() {
|
||||||
<DevTools />
|
<DevTools />
|
||||||
</BrowserRouter>
|
</BrowserRouter>
|
||||||
</ChakraProvider>
|
</ChakraProvider>
|
||||||
</Provider>,
|
</Provider>
|
||||||
rootElement
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
import 'todomvc-app-css/index.css';
|
import 'todomvc-app-css/index.css';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import ReactDOM from 'react-dom';
|
import ReactDOM from 'react-dom/client';
|
||||||
import configureStore from './store/configureStore';
|
import configureStore from './store/configureStore';
|
||||||
import Root from './containers/Root';
|
import Root from './containers/Root';
|
||||||
|
|
||||||
const store = configureStore();
|
const store = configureStore();
|
||||||
|
|
||||||
const rootEl = document.getElementById('root');
|
const rootEl = document.getElementById('root');
|
||||||
ReactDOM.render(<Root store={store} />, rootEl);
|
const root = ReactDOM.createRoot(rootEl!);
|
||||||
|
root.render(<Root store={store} />);
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { render } from 'react-dom';
|
import { createRoot } from 'react-dom/client';
|
||||||
import configureStore from './store/configureStore';
|
import configureStore from './store/configureStore';
|
||||||
import Root from './containers/Root';
|
import Root from './containers/Root';
|
||||||
|
|
||||||
const store = configureStore();
|
const store = configureStore();
|
||||||
|
|
||||||
render(<Root store={store} />, document.getElementById('root'));
|
const root = createRoot(document.getElementById('root')!);
|
||||||
|
root.render(<Root store={store} />);
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
import 'todomvc-app-css/index.css';
|
import 'todomvc-app-css/index.css';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { render } from 'react-dom';
|
import { createRoot } from 'react-dom/client';
|
||||||
import configureStore from './store/configureStore';
|
import configureStore from './store/configureStore';
|
||||||
import Root from './containers/Root';
|
import Root from './containers/Root';
|
||||||
|
|
||||||
const store = configureStore();
|
const store = configureStore();
|
||||||
|
|
||||||
render(<Root store={store} />, document.getElementById('root'));
|
const root = createRoot(document.getElementById('root')!);
|
||||||
|
root.render(<Root store={store} />);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user