![](/img/trans.png)
[英]Is there (should there be) any difference between native js defaultValue and jQuery prop(defaultValue)?
[英]What is the real difference between value and defaultValue in React JS?
在 React 的主頁上,有一個帶有textarea
的最后一個示例(使用外部插件的組件):
<textarea
id="markdown-content"
onChange={this.handleChange}
defaultValue={this.state.value}
/>
當我輸入時, textarea
會更新。
現在,我嘗試使用value
更改defaultValue
:
<textarea
id="markdown-content"
onChange={this.handleChange}
value={this.state.value}
/>
結果是相同的(與defaultValue
,即當我輸入時, textarea
會隨着更新的textarea
在視覺上更新)。
那么,兩者之間的真正區別是什么?
只要您更改 value 中使用的value
,就不會有任何區別。 如果您不更新變量並設置了 textareas 值,則無法通過鍵入來更改 textarea 的值。 通過使用 defaultValue,您不必更新任何變量。
當您將默認值與 input 標簽一起使用時,您可以在沒有 onchange 事件處理程序的情況下編輯輸入值。
如果您使用帶有輸入標簽的值,您需要使用 onchange 事件處理程序來更改輸入值。
我認為一個很好的例子是,如果您使用硬編碼字符串
function App(){ return( <textarea defaultValue="foo" // only by default foo /> ); } ReactDOM.render(<App/>, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.3/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.3/umd/react-dom.production.min.js"></script> <div id="root"></div>
function App(){ return( <textarea value="foo" // will forever be foo /> ); } ReactDOM.render(<App/>, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.3/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.3/umd/react-dom.production.min.js"></script> <div id="root"></div>
因此,雖然本段下方的代碼段可能看起來與使用value
defaultValue
相同,因為onChange
可能會更新狀態值(因此看起來它正在更新defaultValue
) - 事實並非如此。 它仍然是一個不受控制的組件,將直接從用戶輸入更新其值。 它只是使用初始呈現時this.state.value
的任何默認值進行初始化。
<textarea
id="markdown-content"
onChange={this.handleChange}
defaultValue={this.state.value}
/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.