2017-05-08 99 views
2

我運行ESLint和我目前運行到以下ESLint錯誤:Eslint狀態已經宣佈[Vuex]

error 'state' is already declared in the upper scope no-shadow

const state = { 
    date: '', 
    show: false 
}; 

const getters = { 
    date: state => state.date, 
    show: state => state.show 
}; 

const mutations = { 
    updateDate(state, payload) { 
     state.date = payload.date; 
    }, 
    showDatePicker(state) { 
     state.show = true; 
    } 
}; 

export default { 
    state, 
    getters, 
    mutations 
}; 

什麼是解決這一問題的最好方法是什麼?

回答

2

修復的最佳方法是閱讀有關eslint「無影」規則的文檔。

從這份文檔中,最好的解決方案可能是用「allow」選項包含這個變量的例外。

你可以用JS文件註釋添加這種方式來保持exeption地方:

/* eslint no-shadow: ["error", { "allow": ["state"] }]*/ 
+0

以及那些獲得 「無PARAM-重新分配」 錯誤,這是解決方案: /* eslint無PARAM-重新分配:[ 「錯誤」,{「道具「:true,」ignorePropertyModificationsFor「:[」state「]}] * / – kospol

1

你可以只聲明其餘低於state不變,這將防止variable shadowing因爲state不會被宣佈外部範圍呢。

實施例:

const getters = { 
    date: state => state.date, 
    show: state => state.show 
}; 

const mutations = { 
    updateDate(state, payload) { 
     state.date = payload.date; 
    }, 
    showDatePicker(state) { 
     state.show = true; 
    } 
}; 

const state = { 
    date: '', 
    show: false 
}; 

export default { 
    state, 
    getters, 
    mutations 
};