今天上午突然反饋了一個問題,表單中的一個輸入框用戶明明輸入了,但是提交到後臺之後是沒有數據的。我在本地測試了一下,發現也是同樣的情況。後來仔細看了一下代碼,原來的input的外面包裹了一個Fragment元素,後來我將Fragment元素修改爲div或者其他標籤,都是可以正常獲取到這個input的值的,但是就是Fragment包裹起來的話獲取到始終都是undefined。
從rc-form中看getFieldDecorator源代碼其是調用React.cloneElement來返回一個最終元素的,但是不知道爲什麼對於Fragment就是會有些不太一樣。
用div包裹的input最終在控制檯中是這樣的:
不使用任何父元素,直接用input是這樣的:
使用了Fragment之後是這樣的:
從圖中可以看出用Fragment包裹的input少了form表單的一些內部的state值:data_field,data_meta,這或許就是爲什麼一直獲取不到input中值的原因。