实际使用代码,将高阶函数变成正常函数,在第一个return位置打断点
const getters = {
getReadOnly: function(state, parameter, { App }) {
return (row, prop) => {
const shareUserID = App.fileInfo.shareUserID;
return getReadOnly(row, prop, shareUserID);
}
},
根据堆栈找到上层函数调用代码,在vuex内部(vuex.esm.js)
function registerGetter (store, type, rawGetter, local) {
if (store._wrappedGetters[type]) {
if ((process.env.NODE_ENV !== 'production')) {
console.error(("[vuex] duplicate getter key: " + type));
}
return
}
store._wrappedGetters[type] = function wrappedGetter (store) {
return rawGetter(
local.state, // local state
local.getters, // local getters
store.state, // root state
store.getters // root getters
)
};
}
可见,第一个参数是local(本store)的state,第二个参数是本store的getters,第三个参数是全局store的state(按照下方初始化store的代码,就是modules的{name:state}对象),第四个参数是全局store的getters(所有modules的getters)
const store = new Vuex.Store({
modules: modules, // all your modules automatically imported :)
strict: debug == 'false',
plugins: debug == 'true' ? [logger] : [] // set logger only for development
});