شما گفته بودید از آخرین middleware وقتی next میکنیم میره و dispatch اجرا میشه ولی اخر ویدیو یه log دیگه بعد از next داشتیم و اون هم در آخر اجرا شد
لطفا یه توضیحی بدید چرا این اتفاق افتاد.
ممنون
سلام
اگر امکانش هست دقیقه ای که در این مورد صحبت میشه یا کدش رو قرار بدید که بتونم در موردش توضیح بدم چون کلا اینجا داره لاگ انجام میشه و نمیدونم منظورتون کدوم یکی هست
مجتبی سوری۰۶ شهریور ۱۴۰۰، ۰۸:۱۹
تو این قسمت کد که شما تو دو دقیقه آخر ویدیو نوشتید اول لاگها print1 ,print2 ,print3 اجرا شد به ترتیب و بعد اومد اخرین لاگ بعد از next توی print1 اجرا شد
من متوجه نمیشم چرا بعد از print3 دوباره برمیگرده و این لاگ رو اجرا میکنه
اگر next رو return کنیم که مشکل حله ولی میخوام بدونم وقتی return نمیکنیم چرا این اتفاق میافته؟
ممنون
const print1 = storeApi => next => action => {
console.log('Action: ', action);
next(action)
console.log('new state: ', storeApi.getState())
}
function print1(storeApi) {
return function wrapDispatch(next) {
return function handlAction(action) {
console.log(1);
next(action)
console.log('new State :', storeApi.getState());
}
}
}
function print2(storeApi) {
return function wrapDispatch(next) {
return function handlAction2222(action) {
console.log(2);
next(action)
}
}
}
function print3(storeApi) {
return function wrapDispatch(next) {
return function handlAction(action) {
console.log(3);
next(action)
}
}
}
const store = createStore(rootReducer, preloadedState, applyMiddleware(print1, print2, print3))
export default store
علیرضا ایمانی۰۷ شهریور ۱۴۰۰، ۱۸:۴۷
کد زیر رو در نظر بگیرید:
console.log(1);
foo();
console.log(2);
در اینجا foo یک تابع هست که حالا فرقی نمیکنه که داخلش چه لاجیکی داره! منطقا نباید مشکلی داشته باشی که بعد از اجرای تابع foo عملیات لاگ عدد ۲ انجام بشه!
این هم تقریبا مشابه همون حالت! یک تابعی داریم به اسم next که کاری نداریم چه کدی داخل نوشته شده، بعد از اینکه اجرای کدهای اون تموم بشه میرسیم به خط بعدی که داره new state رو لاگ میکنه