EDIT: Added extra code in the filterEvents snippet for more context.
I'm not quite understanding what's going on with my code. I'm trying to pass an array into an action function inside of my Vuex store. If I return a Promise inside of that action function, then the parameter being passed isn't of type Array and is instead an Object, which results in the reject() error that I have for the Promise.
Here's some code for context:
filterEvents({ commit }, events) { console.log(Array.isArray(events)); //this ends up false console.log(events); return new Promise((resolve, reject) => { if (!Array.isArray(events)) { reject("Invalid argument: is not of type Array."); } let filtered = events.filter((event) => { let now = new Date(); let event_stop = new Date(event.stop_time); if (event_stop >= now || event_stop == null) { return event; } }); resolve(filtered); }); }
Here's where I call filterEvents; inside of getEvents;
getEvents({ state, commit, dispatch }, searchParams) { ..... eventful.getEvents(searchParams).then(async (res) => { ..... console.log(Array.isArray(res.data.events.event)); //this ends up true console.log(res.data.events.event); /* where I call it */ await dispatch("filterEvents", res.data.events.event).then((res) => { ..... }); }).catch((err) => { ..... }); }
Here's the output from the Chrome developer console. First two outputs are from getEvents and last two are from filterEvents
Would really like an explanation as to why this is the case. I'm going to bet it's something small, but it's 3 a.m. at the moment and my brain can't wrap around why it's not of type Array when passed into filterEvents.
https://stackoverflow.com/questions/65881182/array-is-not-array-anymore-when-passed-into-vuex-action-function January 25, 2021 at 04:24PM
没有评论:
发表评论