reactjs 如何启用Redux Devtools?

vi4fp9gy  于 2023-05-22  发布在  React
关注(0)|答案(4)|浏览(194)

我正在学习关于React的教程,并在Chrome上安装了一个扩展,Redux Devtools。在我的情况下,我想知道为什么我的扩展似乎是不活动(灰色)。在我的chrome扩展设置中,它是On,网站访问设置为On all sites,允许访问文件URL是on,但当我查看我的Redux选项卡时,它显示:
No store found. Make sure to follow the instructions.
在**.js**文件中,有一个类似于以下内容的声明:

const ReactReduxDevTools = window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__();
let store;
if(window.navigator.userAgent.includes("Chrome") && ReactReduxDevTools){
 store = createStore(
        rootReducer,
        initialState,
        compose(
            applyMiddleware(...middleware), 
            ReactReduxDevTools)
    );
}else{
...
}

会有什么问题呢?与Chrome的兼容性?

mkshixfv

mkshixfv1#

import {Provider} from 'react-redux'

import {createStore, applyMiddleware, compose} from 'redux'

import reducers from './reducers';

const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;

const store = createStore(reducers, composeEnhancers(applyMiddleware()))

ReactDOM.render(
  <Provider store={store}>
    <App />
  </Provider>,
  document.getElementById('root')
);
kse8i1jr

kse8i1jr2#

它只在检测到您正在运行的应用程序上的存储时才起作用。这是有意义的,因为没有什么可以展示的。
启动一个应用程序与Redux正确连接起来,它会出现彩色,并将有非常有用的信息。
编辑:
我想我找到了检查代码是否正确。如果存在__REDUX_DEVTOOLS_EXTENSION_COMPOSE__,则compose方法必须是raplace。

const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose

let store;

store = createStore(
          rootReducer,
          initialState,
          composeEnhancers(
            applyMiddleware(...middleware)
        );

if语句

kpbwa7wx

kpbwa7wx3#

如果你有多个中间件,这是一个更简单的方法。
1.使用npm或yarn安装扩展

npm install --save redux-devtools-extension

1.应用到store.js或任何初始化存储的地方

import { composeWithDevTools } from 'redux-devtools-extension';

const middlewares = [] //put your middleware over here

export const store = createStore(Reducer,composeWithDevTools(
    applyMiddleware(...middlewares))
);
xdnvmnnf

xdnvmnnf4#

@reduxjs/toolkit已经内置了devtools(在使用redux时应该强烈考虑)。添加flag:

export const store = configureStore({
  reducer: enableBatching(
    combineReducers({
      appState: stateSlice.reducer,
    })
  ),
  devTools: true // set to `true` if dev mode, i.e. import.meta.env.DEV for vite
});

相关问题