將標題重寫為:將一個項目設為true,其他所有項目設為false的VueJS響應式元素
P粉786800174
2023-08-28 20:55:03
<p>我正在使用VueJS的組合API開發一個應用程式。
我已經設定了一個響應式元素,如下所示</p>
<pre class="brush:php;toolbar:false;">const sections = reactive({
section1: true,
section2: false,
section3: false,
section4: false,
section5: false,
section6: false
})</pre>
<p>當頁面上的每個按鈕都點擊時,我想根據它們的布林值顯示和隱藏各個元素(以及其他許多操作)。
我可以為每個按鈕編寫一個函數,並按照您在這段程式碼中看到的方式單獨設定所有內容</p>
<pre class="brush:php;toolbar:false;">const section1Button= () => {
sections.section1 = true,
sections.section2 = false,
sections.section3 = false,
sections.section4 = false,
sections.section5 = false,
sections.section6 = false
}
const section2Button= () => {
sections.section1 = false,
sections.section2 = true,
sections.section3 = false,
sections.section4 = false,
sections.section5 = false,
sections.section6 = false
}</pre>
<p>這絕對有效,但這意味著我必須寫多個函數,實際上只有一個變化。
有沒有更有效率的方法來完成這個任務?
我覺得我應該能夠用循環或if語句來做到這一點,但我就是想不起來。
這是我在stackoverflow上的第一篇帖子,如果我沒有提供足夠的細節,請告訴我。 </p>
你可以嘗試像這樣使用
Array.prototype.reduce
和Object.entries
來循環遍歷sections
的鍵/值對,並根據需要設置true
/false
,從而建立一個新的sections
物件:如果你發現需要直接修改屬性,你可以使用
Array.prototype.forEach
:希望對你有幫助!