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