Vuex Error Do not mutate vuex store state outside mutation handlers when commit a mutation into an action...











up vote
0
down vote

favorite












I am using vuex in strict mode: https://vuex.vuejs.org/guide/strict.html



I have a state that I wanna change through a mutation as is described in de documentation. I fire this mutation into a settimeout, so it is an asynchronous mutation so I create an action as follow:



menuOnResize ({ commit }) {
if (!state.menuIsOpen) {
window.addEventListener('resize', resizeThrottler, false)
}
var resizeTimeout
function resizeThrottler () {
if (!resizeTimeout) {
resizeTimeout = setTimeout(() => {
resizeTimeout = null
commit('menuIsOpenOnResize')
}, 500)
}
}
}


But when the action is executed the console give me the next error:



enter image description here



I can't figure out what I'm doing wrong, I mean, I thinks I'm doing the thing in the right way, Mutating the state through a mutation an using a action because it is an asynchronous task.



Versions of vue and vuex:
vue: 2.5.17,
vuex: 3.0.1










share|improve this question


















  • 2




    Your error message doesn't seem to be matching your code, it looks like you're passing the state to a chart library and it's changing things there.
    – George
    Nov 22 at 15:32










  • The strange thing happen here is that this error only appear when my code is executed that have no relation at all with the library, which by the way is vue-chart.js. If a commented the code that call the function menuOnResize error disappears
    – Pablo
    Nov 22 at 15:49










  • it's hard to speculate why you're getting this error only looking at this specific mutation. however it could be that by using "var" in defining resizeTimeout, vue treats it as a state variable. either limit its score using "let" or define it as a state variable and thus use mutations to change its value.
    – mmbrian
    Nov 22 at 16:02










  • It is no the problem @mmbrian I reduced the code to only left the function resizeThrottler () { commit('menuIsOpenOnResize') } and the problem is still there. I will open an issue in the vue-charts github
    – Pablo
    Nov 22 at 17:03












  • I have opened an issue on the vue-chartjs github: github.com/apertureless/vue-chartjs/issues/445
    – Pablo
    Nov 22 at 18:13















up vote
0
down vote

favorite












I am using vuex in strict mode: https://vuex.vuejs.org/guide/strict.html



I have a state that I wanna change through a mutation as is described in de documentation. I fire this mutation into a settimeout, so it is an asynchronous mutation so I create an action as follow:



menuOnResize ({ commit }) {
if (!state.menuIsOpen) {
window.addEventListener('resize', resizeThrottler, false)
}
var resizeTimeout
function resizeThrottler () {
if (!resizeTimeout) {
resizeTimeout = setTimeout(() => {
resizeTimeout = null
commit('menuIsOpenOnResize')
}, 500)
}
}
}


But when the action is executed the console give me the next error:



enter image description here



I can't figure out what I'm doing wrong, I mean, I thinks I'm doing the thing in the right way, Mutating the state through a mutation an using a action because it is an asynchronous task.



Versions of vue and vuex:
vue: 2.5.17,
vuex: 3.0.1










share|improve this question


















  • 2




    Your error message doesn't seem to be matching your code, it looks like you're passing the state to a chart library and it's changing things there.
    – George
    Nov 22 at 15:32










  • The strange thing happen here is that this error only appear when my code is executed that have no relation at all with the library, which by the way is vue-chart.js. If a commented the code that call the function menuOnResize error disappears
    – Pablo
    Nov 22 at 15:49










  • it's hard to speculate why you're getting this error only looking at this specific mutation. however it could be that by using "var" in defining resizeTimeout, vue treats it as a state variable. either limit its score using "let" or define it as a state variable and thus use mutations to change its value.
    – mmbrian
    Nov 22 at 16:02










  • It is no the problem @mmbrian I reduced the code to only left the function resizeThrottler () { commit('menuIsOpenOnResize') } and the problem is still there. I will open an issue in the vue-charts github
    – Pablo
    Nov 22 at 17:03












  • I have opened an issue on the vue-chartjs github: github.com/apertureless/vue-chartjs/issues/445
    – Pablo
    Nov 22 at 18:13













up vote
0
down vote

favorite









up vote
0
down vote

favorite











I am using vuex in strict mode: https://vuex.vuejs.org/guide/strict.html



I have a state that I wanna change through a mutation as is described in de documentation. I fire this mutation into a settimeout, so it is an asynchronous mutation so I create an action as follow:



menuOnResize ({ commit }) {
if (!state.menuIsOpen) {
window.addEventListener('resize', resizeThrottler, false)
}
var resizeTimeout
function resizeThrottler () {
if (!resizeTimeout) {
resizeTimeout = setTimeout(() => {
resizeTimeout = null
commit('menuIsOpenOnResize')
}, 500)
}
}
}


But when the action is executed the console give me the next error:



enter image description here



I can't figure out what I'm doing wrong, I mean, I thinks I'm doing the thing in the right way, Mutating the state through a mutation an using a action because it is an asynchronous task.



Versions of vue and vuex:
vue: 2.5.17,
vuex: 3.0.1










share|improve this question













I am using vuex in strict mode: https://vuex.vuejs.org/guide/strict.html



I have a state that I wanna change through a mutation as is described in de documentation. I fire this mutation into a settimeout, so it is an asynchronous mutation so I create an action as follow:



menuOnResize ({ commit }) {
if (!state.menuIsOpen) {
window.addEventListener('resize', resizeThrottler, false)
}
var resizeTimeout
function resizeThrottler () {
if (!resizeTimeout) {
resizeTimeout = setTimeout(() => {
resizeTimeout = null
commit('menuIsOpenOnResize')
}, 500)
}
}
}


But when the action is executed the console give me the next error:



enter image description here



I can't figure out what I'm doing wrong, I mean, I thinks I'm doing the thing in the right way, Mutating the state through a mutation an using a action because it is an asynchronous task.



Versions of vue and vuex:
vue: 2.5.17,
vuex: 3.0.1







javascript vue.js vuex






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 22 at 15:29









Pablo

6310




6310








  • 2




    Your error message doesn't seem to be matching your code, it looks like you're passing the state to a chart library and it's changing things there.
    – George
    Nov 22 at 15:32










  • The strange thing happen here is that this error only appear when my code is executed that have no relation at all with the library, which by the way is vue-chart.js. If a commented the code that call the function menuOnResize error disappears
    – Pablo
    Nov 22 at 15:49










  • it's hard to speculate why you're getting this error only looking at this specific mutation. however it could be that by using "var" in defining resizeTimeout, vue treats it as a state variable. either limit its score using "let" or define it as a state variable and thus use mutations to change its value.
    – mmbrian
    Nov 22 at 16:02










  • It is no the problem @mmbrian I reduced the code to only left the function resizeThrottler () { commit('menuIsOpenOnResize') } and the problem is still there. I will open an issue in the vue-charts github
    – Pablo
    Nov 22 at 17:03












  • I have opened an issue on the vue-chartjs github: github.com/apertureless/vue-chartjs/issues/445
    – Pablo
    Nov 22 at 18:13














  • 2




    Your error message doesn't seem to be matching your code, it looks like you're passing the state to a chart library and it's changing things there.
    – George
    Nov 22 at 15:32










  • The strange thing happen here is that this error only appear when my code is executed that have no relation at all with the library, which by the way is vue-chart.js. If a commented the code that call the function menuOnResize error disappears
    – Pablo
    Nov 22 at 15:49










  • it's hard to speculate why you're getting this error only looking at this specific mutation. however it could be that by using "var" in defining resizeTimeout, vue treats it as a state variable. either limit its score using "let" or define it as a state variable and thus use mutations to change its value.
    – mmbrian
    Nov 22 at 16:02










  • It is no the problem @mmbrian I reduced the code to only left the function resizeThrottler () { commit('menuIsOpenOnResize') } and the problem is still there. I will open an issue in the vue-charts github
    – Pablo
    Nov 22 at 17:03












  • I have opened an issue on the vue-chartjs github: github.com/apertureless/vue-chartjs/issues/445
    – Pablo
    Nov 22 at 18:13








2




2




Your error message doesn't seem to be matching your code, it looks like you're passing the state to a chart library and it's changing things there.
– George
Nov 22 at 15:32




Your error message doesn't seem to be matching your code, it looks like you're passing the state to a chart library and it's changing things there.
– George
Nov 22 at 15:32












The strange thing happen here is that this error only appear when my code is executed that have no relation at all with the library, which by the way is vue-chart.js. If a commented the code that call the function menuOnResize error disappears
– Pablo
Nov 22 at 15:49




The strange thing happen here is that this error only appear when my code is executed that have no relation at all with the library, which by the way is vue-chart.js. If a commented the code that call the function menuOnResize error disappears
– Pablo
Nov 22 at 15:49












it's hard to speculate why you're getting this error only looking at this specific mutation. however it could be that by using "var" in defining resizeTimeout, vue treats it as a state variable. either limit its score using "let" or define it as a state variable and thus use mutations to change its value.
– mmbrian
Nov 22 at 16:02




it's hard to speculate why you're getting this error only looking at this specific mutation. however it could be that by using "var" in defining resizeTimeout, vue treats it as a state variable. either limit its score using "let" or define it as a state variable and thus use mutations to change its value.
– mmbrian
Nov 22 at 16:02












It is no the problem @mmbrian I reduced the code to only left the function resizeThrottler () { commit('menuIsOpenOnResize') } and the problem is still there. I will open an issue in the vue-charts github
– Pablo
Nov 22 at 17:03






It is no the problem @mmbrian I reduced the code to only left the function resizeThrottler () { commit('menuIsOpenOnResize') } and the problem is still there. I will open an issue in the vue-charts github
– Pablo
Nov 22 at 17:03














I have opened an issue on the vue-chartjs github: github.com/apertureless/vue-chartjs/issues/445
– Pablo
Nov 22 at 18:13




I have opened an issue on the vue-chartjs github: github.com/apertureless/vue-chartjs/issues/445
– Pablo
Nov 22 at 18:13

















active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53434146%2fvuex-error-do-not-mutate-vuex-store-state-outside-mutation-handlers-when-commit%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown






























active

oldest

votes













active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.





Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


Please pay close attention to the following guidance:


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53434146%2fvuex-error-do-not-mutate-vuex-store-state-outside-mutation-handlers-when-commit%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Trompette piccolo

Slow SSRS Report in dynamic grouping and multiple parameters

Simon Yates (cyclisme)