এটি করার একটি উপায় হ'ল আপনার অ্যাপ্লিকেশনটিতে একটি রুট রিডুসার লিখুন।
রুট রিডিউসারটি সাধারণত উত্পাদিত হ্রাসকারীর কাছে ক্রিয়া পরিচালনা করার জন্য প্রতিনিধিত্ব করবে combineReducers()। যাইহোক, যখনই এটি USER_LOGOUTঅ্যাকশন পায় , এটি আবার প্রাথমিক অবস্থায় ফিরে আসে।
উদাহরণস্বরূপ, যদি আপনার রুট রিডুসারটি এর মতো দেখায়:
const rootReducer = combineReducers({
/* your app’s top-level reducers */
})
আপনি এটির নাম পরিবর্তন করতে appReducerএবং এটিতে একটি নতুন rootReducerপ্রতিনিধি লিখতে পারেন:
const appReducer = combineReducers({
/* your app’s top-level reducers */
})
const rootReducer = (state, action) => {
return appReducer(state, action)
}
এখন আমাদের কেবল rootReducerনতুনটিকে USER_LOGOUTক্রিয়াকলাপের পরে প্রাথমিক অবস্থায় ফিরে আসতে শেখানো দরকার । যেমনটি আমরা জানি, হ্রাসকারীরা undefinedপ্রথমে যুক্তি হিসাবে ডাকা হলেও প্রাথমিক অবস্থা ফিরে আসার কথা , কোনও পদক্ষেপই আসেনি। আসুন শর্তসাপেক্ষে স্ট্রিপ সঞ্চিত এই সত্য ব্যবহার stateহিসাবে আমরা এটি পাস appReducer:
const rootReducer = (state, action) => {
if (action.type === 'USER_LOGOUT') {
state = undefined
}
return appReducer(state, action)
}
এখন, যখনই USER_LOGOUTআগুন লাগবে, সমস্ত হ্রাসকারীদের নতুন করে শুরু করা হবে। তারা চাইলে প্রাথমিকভাবে তাদের চেয়ে আলাদা কিছু ফিরিয়ে দিতে পারে কারণ তারা action.typeপাশাপাশি পরীক্ষা করতে পারে।
পুনরাবৃত্তি করতে, সম্পূর্ণ নতুন কোডটি এর মতো দেখাচ্ছে:
const appReducer = combineReducers({
/* your app’s top-level reducers */
})
const rootReducer = (state, action) => {
if (action.type === 'USER_LOGOUT') {
state = undefined
}
return appReducer(state, action)
}
নোট করুন যে আমি এখানে রাষ্ট্র পরিবর্তন করছি না, আমি অন্য কোনও ফাংশনে স্থান দেওয়ার আগে কেবল স্থানীয় ভেরিয়েবলের রেফারেন্সটি পুনরায় অর্পণ করছি state। কোনও রাষ্ট্রের বস্তুকে রূপান্তর করা রেডাক্স নীতির লঙ্ঘন হবে।
আপনি যদি রিডেক্স-কন্টিনিস্ট ব্যবহার করছেন তবে আপনার স্টোরেজও পরিষ্কার করার দরকার হতে পারে। রেডাক্স-কন্টিনিস্ট স্টোরেজ ইঞ্জিনে আপনার রাজ্যের অনুলিপি রাখে এবং রাষ্ট্রীয় অনুলিপিটি সেখান থেকে লোড হয়ে যায় রিফ্রেশের সময়।
প্রথমে আপনাকে যথাযথ স্টোরেজ ইঞ্জিনটি আমদানি করতে হবে এবং তারপরে, undefinedপ্রতিটি স্টোরেজ স্টেট কীটি সেট করার আগে সেটিকে বিশ্লেষণ করতে এবং বিশ্লেষণ করতে হবে ।
const rootReducer = (state, action) => {
if (action.type === SIGNOUT_REQUEST) {
// for all keys defined in your persistConfig(s)
storage.removeItem('persist:root')
// storage.removeItem('persist:otherKey')
state = undefined;
}
return appReducer(state, action);
};