در پکیج مدیریت وضعیت ویو جی اس (Vuex) دو مفهوم تحت عنوان "action" و "mutations" وجود دارد.
من منطق کامپوننت های ویو جی اس (Vuejs) را به صورت کامل یاد گرفتم و می توانم به راحتی یک وضعیت یا موقعیت (State) را بروزرسانی کنم اما دقیقا نمی دانم که تفاوت بین action و mutations چیست و این دو مفهوم چطور کار می کنند؟ از افراد متخصصی که با Vuex کار کردند تقاضا دارم بنده را راهنمایی کنند
برای پاسخ به سوال شما ابتدا یک سوال اصلی مطرح می کنم و به آن پاسخ می دهم:
سوال ۱: چرا توسعه دهندگان Vuejs می توانند از Action یا Mutations در Vuex استفاده کنند؟
پاسخ:
حال به این سوال پاسخ می دهم: چه تفاوتی بین Actions و Mutations در Vuex وجود دارد؟
Mutations بر اساس رویدادها کار می کنند. یعنی دقیقا مشابه یک رویداد با آن بر خورد می شود. (منظور از رویداد همان Event است). هر Mutation یک نام و یک راه انداز دارد. از طرفی Mutation ها برای ویرایش موقعیت (state) بکار گرفته شده و قوانین منطق (Logic) در آن اهمیتی ندارد بلکه فقط اطلاعاتی درباره وضعیت یا state ارائه می دهد.
به مثال زیر توجه کنید:
import Vuex from 'vuex'
const store = new Vuex.Store({
state: {
count: 1
},
mutations: {
INCREMENT (state) {
// mutate state
state.count++
}
}
})
از طرفی Action ها مشابه یک متد یا تابع هستند که وظیفه ی آنها اجرا یا پخش (Dispatch) کردن Mutation ها است. به عبارت دیگر Action ها دقیقا همان قوانین منطقی (Logic) هستند که با استفاده از آنها می توان در یک لحظه یک یا چندین Mutation را اجرا (Dispatch) کرد. در Action ها اطلاعات داده های تغییر یافته مهم نیست.
به مثال زیر توجه کنید:
function increment (store) {
store.dispatch('INCREMENT')
}
function incrementBy ({ dispatch }, amount) {
dispatch('INCREMENT', amount)
}
در یک جمله اگر بخواهم به صورت خلاصه بگویم، Action ها دقیقا راه انداز Mutation ها هستند و به گونه ای مکمل یکدیگر عمل می کنند.
به جمع هزاران کاربر اینستاگرامی روکسو بپیوندید.