के भीतर गेटर्स तक पहुंचने के लिए एक वूएक्स स्टोर उत्परिवर्तन के भीतर, क्या गेटटर तक पहुंच बनाना संभव है? नीचे दिए गए उदाहरण पर विचार करें।Vuex उत्परिवर्तन
new Vuex.Store({
state: {
question: 'Is it possible to access getters within a Vuex mutation?'
},
mutations: {
askQuestion(state) {
// TODO: Get question from getter here
let question = '';
if (question) {
// ...
}
}
},
getters: {
getQuestion: (state) => {
return state.question;
}
}
});
बेशक उदाहरण खास मतलब नहीं है, क्योंकि मैं तो बस उत्परिवर्तन के भीतर state
वस्तु पर सीधे question
संपत्ति का उपयोग कर सकता है, लेकिन मुझे आशा है कि आप देख मैं क्या करने की कोशिश कर रहा हूँ। वह सशर्त रूप से राज्य में छेड़छाड़ कर रहा है।
उत्परिवर्तन के भीतर, this
undefined
है और state
पैरामीटर state
वस्तु का उपयोग करने देता है, और नहीं की दुकान के बाकी।
The documentation on mutations ऐसा करने के बारे में कुछ भी उल्लेख नहीं करता है।
मेरा अनुमान होगा कि यह संभव नहीं है, जब तक कि मुझे कुछ याद नहीं आया? मुझे लगता है कि वैकल्पिक रूप से स्टोर के बाहर इस तर्क को निष्पादित करना होगा (परिणामस्वरूप कोड डुप्लिकेशंस) या ऐसा करने वाली क्रिया को कार्यान्वित करना, क्योंकि कार्यों को पूरे स्टोर संदर्भ तक पहुंच है। मुझे पूरा यकीन है कि यह एक बेहतर दृष्टिकोण है, जो उत्परिवर्तन को उस पर ध्यान केंद्रित करना है जो वास्तव में करना है; राज्य को mutate। शायद यही है कि मैं क्या करूँगा, लेकिन अगर मैं उत्परिवर्तन के भीतर गेटर तक पहुंचने के लिए भी संभव हूं तो मैं उत्सुक हूं?
आप शायद तुम क्यों उत्परिवर्तन में ही टिककर खेल आवश्यकता होगी पर विस्तृत सकता है? आप सही हैं कि आपका उदाहरण आसानी से 'state.question' को संदर्भित कर सकता है। और, हां, किसी भी तर्क जो वर्तमान स्थिति के आधार पर एक अलग * कार्रवाई * लेगा, उसे एक क्रिया में संभाला जाना चाहिए। – thanksd
आप कार्यों में गेटर्स तक पहुंच सकते हैं, क्योंकि क्रियाएं पहले तर्क के रूप में संदर्भ प्राप्त करती हैं। इस तरह: क्रियाएं: {action1: (संदर्भ, पेलोड) => {console.log (context.getters.get कुछ); }}। सुनिश्चित नहीं है कि आप इसे उत्परिवर्तन में कर सकते हैं, क्योंकि उत्परिवर्तन केवल स्थानीय 'राज्य' प्राप्त करते हैं। – wostex
@thanksd क्योंकि मेरा असली कोड इससे अधिक जटिल है, और मुझे कुछ जांचना होगा। ठोस उदाहरण एक कार्ट में एक उत्पाद जोड़ रहा है, और मैं यह जांचना चाहता हूं कि यह पहले से मौजूद है या नहीं। मैं इसे साफ रखने के लिए उत्परिवर्तन से उस तर्क को बाहर रखना चाहता था। मुझे पूरा यकीन है कि एक क्रिया का उपयोग करने का सबसे अच्छा तरीका भी है, लेकिन किसी भी कारण से - उत्परिवर्तन के भीतर गेटर्स तक पहुंचने के लिए भी संभव है, लेकिन केवल उत्सुक था। – Andy0708