問題代碼:
const tempFieldsValue = this.form.getFieldsValue() Object.keys(tempFieldsValue).map((k) => { if(typeof(tempFieldsValue[k]) === 'string' && tempFieldsValue[k].indexOf('---') !== -1) { this.form.setFieldsValue({ k: undefined }) } })
原因是 “{ }”本身是一個 new Object() 的語法糖,如果寫成{ k: undefined },k 將會被解析成一個新的鍵,等同於聲明了一個新的變量,它不會指向map函數中的item.
setFieldsValue並非不生效,只是作用在了鍵為“ k ”的表單項中,我在HTML中增加了一個鍵為k的表單項,通過這行語句果然改變了這個表單項的值,
this.form.setFieldsValue({ [k]: undefined })
將第4行改成 [ k ] 來改變“ k ”的指向 ,使得它能獲取到map( )函數item的值。
基礎語法很重要