Form組件之placeholder遇到initialValue

一、前言

        最近項目中,發現了一個奇怪的現象:

               <Input/>組件(ant中的)的placeholder 有時候會顯示,有的時候卻不顯示。

正常情況下,只要  <Input/>組件沒有value就會顯示placeholder的內容,可這次input明明沒有值的呀,這是怎麼回事?

二、placeholder遇到initialValue

   2.1問題描述

    項目環境:pro4 (ant組件(3.25.3)+ts+……);

    組件使用環境:Form表單中使用<Input/>

   產生問題

       有的時候即使<Input/>組件沒有value,也不顯示placeholder設置的內容

2.2問題排查

         項目中不害怕出現bug,怕的是這個bug時而出現,時而不出現。怎麼辦呢?能怎麼辦,控制檯輸出對應<Input/>的值唄。然後發現:

   當後端返回的字段爲null時,<Input/>的placeholder不顯示;而如果是返回的是undefined(空對象,取不到對應的值會是undefined)時,<Input/>的placeholder正常顯示

這就很尷尬了,難道當取不到值時,應該設置爲undefined的?於是代碼變成如下:

  initialValue: everyRuleDetail.calculateTypeId || undefined,

 然後就解決問題了。

    當然,爲了確認,我又將代碼改成

  initialValue: everyRuleDetail.calculateTypeId || null

發現,無論何時,placeholder都不生效

2.3問題結論

      在Form組件中,當placeholder遇到initialValue:如果initialValue的值不存在,建議設置爲undefined,此時placeholder才能正常發揮作用(當然,如果沒有用placeholder,那隨意咯)

2.4問題遺留

     爲了讓結論更準確,我決定去官網試試,結果codeopen打開後,給同一個Form下的兩個不同<Input/>組件設置不一樣的initialValue(undefined和null),結果placeholder正常顯示。這!打臉來的太快,比龍捲風還快!於是,又回到了項目中,試了一下,還是發現當爲null時,placeholder不生效,而爲undefined時,正常!這……

2.5那先這樣好吧

       如果實際開發中遇到placeholder不生效的情況,可以將其對應的nitialValue設置爲undefined試試

 

   

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章