mirror of
				https://github.com/reduxjs/redux-devtools.git
				synced 2025-11-04 01:47:25 +03:00 
			
		
		
		
	* chore(deps): update dependency prettier to v3 * Format --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Nathan Bierema <nbierema@gmail.com>
		
			
				
	
	
		
			79 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# Recipes
 | 
						|
 | 
						|
### Using in a typescript project
 | 
						|
 | 
						|
The recommended way is to use [`@redux-devtools/extension` npm package](/README.md#13-use-redux-devtools-extension-package-from-npm), which contains all typescript definitions. Or you can just use `window as any`:
 | 
						|
 | 
						|
```js
 | 
						|
const store = createStore(
 | 
						|
  rootReducer,
 | 
						|
  initialState,
 | 
						|
  (window as any).__REDUX_DEVTOOLS_EXTENSION__ &&
 | 
						|
    (window as any).__REDUX_DEVTOOLS_EXTENSION__()
 | 
						|
);
 | 
						|
```
 | 
						|
 | 
						|
Note that you many need to set `no-any` to false in your `tslint.json` file.
 | 
						|
 | 
						|
Alternatively you can use type-guard in order to avoid
 | 
						|
casting to any.
 | 
						|
 | 
						|
```typescript
 | 
						|
import { createStore, StoreEnhancer } from 'redux';
 | 
						|
 | 
						|
// ...
 | 
						|
 | 
						|
type WindowWithDevTools = Window & {
 | 
						|
  __REDUX_DEVTOOLS_EXTENSION__: () => StoreEnhancer<unknown, {}>;
 | 
						|
};
 | 
						|
 | 
						|
const isReduxDevtoolsExtenstionExist = (
 | 
						|
  arg: Window | WindowWithDevTools,
 | 
						|
): arg is WindowWithDevTools => {
 | 
						|
  return '__REDUX_DEVTOOLS_EXTENSION__' in arg;
 | 
						|
};
 | 
						|
 | 
						|
// ...
 | 
						|
 | 
						|
const store = createStore(
 | 
						|
  rootReducer,
 | 
						|
  initialState,
 | 
						|
  isReduxDevtoolsExtenstionExist(window)
 | 
						|
    ? window.__REDUX_DEVTOOLS_EXTENSION__()
 | 
						|
    : undefined,
 | 
						|
);
 | 
						|
```
 | 
						|
 | 
						|
### Export from browser console or from application
 | 
						|
 | 
						|
```js
 | 
						|
store.liftedStore.getState();
 | 
						|
```
 | 
						|
 | 
						|
The extension is not sharing `store` object, so you should take care of that.
 | 
						|
 | 
						|
### Applying multiple times with different sets of options
 | 
						|
 | 
						|
We're [not allowing that from instrumentation part](https://github.com/reduxjs/redux-devtools/blob/main/packages/redux-devtools-extension/src/logOnly.ts), which can be used it like so:
 | 
						|
 | 
						|
```js
 | 
						|
import { createStore, compose } from 'redux';
 | 
						|
import { devToolsEnhancerLogOnly } from '@redux-devtools/extension';
 | 
						|
 | 
						|
const store = createStore(
 | 
						|
  reducer,
 | 
						|
  /* preloadedState, */ compose(
 | 
						|
    devToolsEnhancerLogOnly({
 | 
						|
      instaceID: 1,
 | 
						|
      name: 'Denylisted',
 | 
						|
      actionsDenylist: '...',
 | 
						|
    }),
 | 
						|
    devToolsEnhancerLogOnly({
 | 
						|
      instaceID: 2,
 | 
						|
      name: 'Allowlisted',
 | 
						|
      actionsAllowlist: '...',
 | 
						|
    }),
 | 
						|
  ),
 | 
						|
);
 | 
						|
```
 |