react input 不設定onchange的常見錯誤截圖
表單是前端非常重要的一塊內容,並且往往包含了錯誤校驗等邏輯。
react對表單元素做了專門的優化處理,他對表單元素做了一些抽象,使得他們的使用方式更統一更規範。
表單裡面出來了乙個新的概念叫「約束性元件」。那麼如何理解約束性元件和非約束性元件呢。
約束性元件,簡單的說,就是由react管理了它的value,而非約束性元件的value就是原生的dom管理的。
他們的寫法上也有很大區別。
非約束性元件這麼寫:
"這個text
" defaultvalue="
a" />
defaultvalue
其實就是原生dom中的value
屬性。這樣寫出的來的元件,其value值就是使用者輸入的內容,react完全不管理輸入的過程。
而約束性元件是這麼寫的:
"這裡,value屬性不再是乙個寫死的值,他是text
" value= onchange= />
//...省略部分**
handlechange: function(e) );
}
this.state.name
,而this.state.name
是由this.handlechange
負責管理的。
這個時候實際上 input 的 value 根本不是使用者輸入的內容。而是onchange 事件觸發之後,由於 this.setstate 導致了一次重新渲染。不過react會優化這個渲染過程,實際它依然是通過設定input的value來實現的。
但是一定要注意,約束性元件顯示的值和使用者輸入的值雖然很多時候是相同的,但他們根本是兩碼事。約束性元件顯示的是this.state.name
的值。你可以在handlechange中對使用者輸入的值做任意的處理,比如你可以做錯誤校驗。
對比約束性元件和非約束性元件的輸入流程:
非約束性元件: 使用者輸入a ->input 中顯示a正式因為這樣,強烈推薦使用約束性元件,因為它能更好的控制項的生命流程。約束性元件: 使用者輸入a -> 觸發onchange事件 -> handlechange 中設定 state.name = 「a」 -> 渲染input使他的value變成a
react中獲取Input的值
this.refs.box.value 這種寫法目前已經被淘汰了 2 this.input.value input 代表input框這個真實元素 3 this.inp react.createref this.inp.current.value 受控輸入框和非受控輸入框 所謂的受控或非受,它的是是受...
Css 設定input輸入框游標顏色
在使用 input 輸入框時,我們可能會遇到需要給其設定游標顏色的情況。谷歌瀏覽器的預設游標顏色是黑色的,github 上的游標卻是白色,那麼這個用 css 怎麼改變呢?上面描述的情景有兩種實現方式 游標的顏色是繼承自當前輸入框字型的顏色,所以用color屬性即可改變 input 上一種方式已經修改...
React中設定樣式
div 在react中設定class時使用classname,然後引入對用的css檔案 div 方便我們在react中使用classname,可以想vue一樣進行動態的型別設定 styled components 官網 vscode.外掛程式 vscode styled components 簡單的...