extension.zip
من الإصدارات الأخيرة، ثم قم بفك الضغط، وافتح chrome://extensions
url وقم بتشغيل وضع المطور من أعلى اليسار ثم انقر فوق؛ عند Load Unpacked
وحدد المجلد المستخرج للاستخدامnpm i && npm run build:extension
وقم بتحميل مجلد الامتداد ./build/extension
;npm i && npm start
وتحميل مجلد الامتداد ./dev
.npm i && npm run build:firefox
وقم بتحميل مجلد الامتداد ./build/firefox
(فقط حدد ملفًا من داخل الدليل).REDUX_DEVTOOLS
في electron-devtools-installer
.remote-redux-devtools
. لاحظ أنه بدءًا من الإصدار 2.7، تمت إعادة تسمية
window.devToolsExtension
إلىwindow.__REDUX_DEVTOOLS_EXTENSION__
/window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__
.
بالنسبة لمتجر Redux الأساسي، قم ببساطة بإضافة:
const store = createStore(
reducer, /* preloadedState, */
+ window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
);
لاحظ أن وسيطة preloadedState
اختيارية في createStore
الخاص بـ Redux.
بالنسبة للتطبيقات العامة ("المتماثلة")، ابدأها بـ
typeof window !== 'undefined' &&
.
const composeEnhancers = ( typeof window !== 'undefined' && window . __REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ) || compose ;
بالنسبة لـ TypeScript، استخدم حزمة
redux-devtools-extension
npm، التي تحتوي على جميع التعريفات، أو استخدم فقط(window as any)
(راجع الوصفات للحصول على مثال).
const composeEnhancers = ( window as any ) . __REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose ;
في حالة تكوين ESLint بحيث لا يسمح باستخدام الشرطة السفلية المتدلية، قم بتغليفها كما يلي:
+ /* eslint-disable no-underscore-dangle */
const store = createStore(
reducer, /* preloadedState, */
window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
);
+ /* eslint-enable */
ملحوظة : تمرير المحسن كوسيطة أخيرة يتطلب redux@>=3.1.0 . بالنسبة للإصدارات الأقدم قم بتطبيقه هنا أو هنا. لا تخلط واجهة Redux API القديمة مع الواجهة الجديدة.
لا تحتاج إلى تثبيت npm
redux-devtools
عند استخدام الامتداد (وهذا lib مختلف).
إذا قمت بإعداد متجرك باستخدام البرامج الوسيطة والمحسنات، فقم بتغيير:
import { createStore, applyMiddleware, compose } from 'redux';
+ const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
+ const store = createStore(reducer, /* preloadedState, */ composeEnhancers(
- const store = createStore(reducer, /* preloadedState, */ compose(
applyMiddleware(...middleware)
));
لاحظ أنه عندما لا يتم تثبيت الامتداد، فإننا نستخدم Redux compose هنا.
لتحديد خيارات الامتداد، استخدمه كما يلي:
const composeEnhancers =
typeof window === 'object' &&
window . __REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ?
window . __REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ( {
// Specify extension’s options like name, actionsBlacklist, actionsCreators, serialize...
} ) : compose ;
const enhancer = composeEnhancers (
applyMiddleware ( ... middleware ) ,
// other store enhancers if any
) ;
const store = createStore ( reducer , enhancer ) ;
انظر المنشور لمزيد من التفاصيل.
redux-devtools-extension
من npmلتسهيل الأمور، هناك حزمة npm لتثبيتها:
npm install --save redux-devtools-extension
واستخدامها مثل ذلك:
import { createStore , applyMiddleware } from 'redux' ;
import { composeWithDevTools } from 'redux-devtools-extension' ;
const store = createStore ( reducer , composeWithDevTools (
applyMiddleware ( ... middleware ) ,
// other store enhancers if any
) ) ;
لتحديد خيارات الامتداد:
import { createStore , applyMiddleware } from 'redux' ;
import { composeWithDevTools } from 'redux-devtools-extension' ;
const composeEnhancers = composeWithDevTools ( {
// Specify name here, actionsBlacklist, actionsCreators and other options if needed
} ) ;
const store = createStore ( reducer , /* preloadedState, */ composeEnhancers (
applyMiddleware ( ... middleware ) ,
// other store enhancers if any
) ) ;
هناك فقط بضعة أسطر من التعليمات البرمجية المضافة إلى الحزمة الخاصة بك.
في حالة عدم تضمين محسّنات وبرامج وسيطة أخرى، فما عليك سوى استخدام devToolsEnhancer
:
import { createStore } from 'redux' ;
import { devToolsEnhancer } from 'redux-devtools-extension' ;
const store = createStore ( reducer , /* preloadedState, */ devToolsEnhancer (
// Specify name here, actionsBlacklist, actionsCreators and other options if needed
) ) ;
من المفيد تضمين الامتداد في الإنتاج أيضًا. عادة يمكنك استخدامه للتطوير.
إذا كنت تريد تقييده هناك، استخدم redux-devtools-extension/logOnlyInProduction
:
import { createStore } from 'redux' ;
import { devToolsEnhancer } from 'redux-devtools-extension/logOnlyInProduction' ;
const store = createStore ( reducer , /* preloadedState, */ devToolsEnhancer (
// options like actionSanitizer, stateSanitizer
) ) ;
أو مع البرامج الوسيطة والمحسنات:
import { createStore , applyMiddleware } from 'redux' ;
import { composeWithDevTools } from 'redux-devtools-extension/logOnlyInProduction' ;
const composeEnhancers = composeWithDevTools ( {
// options like actionSanitizer, stateSanitizer
} ) ;
const store = createStore ( reducer , /* preloadedState, */ composeEnhancers (
applyMiddleware ( ... middleware ) ,
// other store enhancers if any
) ) ;
سيتعين عليك إضافة
'process.env.NODE_ENV': JSON.stringify('production')
في تكوين Webpack الخاص بك لحزمة الإنتاج (للحسد). إذا كنت تستخدمcreate-react-app
، فهو يفعل ذلك نيابةً عنك بالفعل.
إذا كنت تقوم بالفعل بالتحقق من process.env.NODE_ENV
عند إنشاء المتجر، فقم بتضمين redux-devtools-extension/logOnly
لبيئة الإنتاج.
إذا كنت لا تريد السماح بالامتداد في الإنتاج، فما عليك سوى استخدام redux-devtools-extension/developmentOnly
.
راجع المقال لمزيد من التفاصيل.
بالنسبة إلى React Native، يمكننا استخدام react-native-debugger
، والذي يتضمن بالفعل نفس واجهة برمجة التطبيقات مع ملحق Redux DevTools.
بالنسبة لمعظم الأنظمة الأساسية، قم بتضمين مُحسِّن متجر Remote Redux DevTools
، ومن قائمة سياق الامتداد اختر "Open Remote DevTools" للمراقبة عن بعد.
راجع عمليات التكامل ومنشور المدونة للحصول على مزيد من التفاصيل حول كيفية استخدام الامتداد مع أي بنية.
عروض توضيحية مباشرة لاستخدام الامتداد مع:
راجع أيضًا مجلد ./examples
.
ادعمنا بتبرع شهري وساعدنا على مواصلة أنشطتنا. [كن داعمًا]
كن راعيًا واحصل على شعارك على ملف README الخاص بنا على Github مع رابط لموقعك. [كن راعيًا]
معهد ماساتشوستس للتكنولوجيا
إذا أعجبك هذا، تابع @mdiordiev على تويتر.