2017-02-18 34 views
3
<select> 
    <option selected disabled>Select</option 

我添加了禁用的財產多了一種選擇,但是這使得一個警告如:如何在反應js中設置下拉框的佔位符?

使用defaultValuevalue道具的選擇,而不是設置在選項 selected

<select> 
    {this.props.optionarray.map(function(e){ 
     return <option 
        value={e[self.props.unique]} 
        key={e[self.props.unique]} 
       > 
        {e[self.props.name]} 
       </option> 
    })} 
</select> 

optionarray是作爲props到其上具有object每個索引被映射和我通過密鑰作爲道具太這是在陣列被傳遞的array。一切都在這裏工作,它只是告訴我上面提到的警告。

如何刪除或如何設置下拉反應的完美佔位符?

+0

它不是一個reactJs'的'問題。「HTML」中沒有「佔位符」的概念。您需要添加一個選項作爲'defaultValue',並在驗證期間處理它,如果它被選中或者沒有。或者使用'onChange'處理程序修改狀態變量並檢查它的存在。 – Panther

+0

是的。 select的defaultValue需要具有所選選項的唯一值。相反,我沒有通過任何價值。給狀態選擇和更新狀態的價值做了魔術。 –

回答

7

原因是,React提供通過使用states控制元件的一個更好的方式,因此代替使用selected與選項使用的select值屬性,並在state變量定義其值,使用onChange方法來更新state ,使用它是這樣的:

class App extends React.Component { 

    constructor(props) { 
     super(props); 
     this.state = { 
      value: '1' 
     }; 
    } 

    render(){ 
     return(
      <select value={this.state.value} onChange={(e)=>{this.setState({value: e.target.value})}}> 
       <option value='1' disabled>Select</option> 
       { 
        [2,3,4].map((i,j)=>{ 
         return <option key={i} value={i}>{i}</option> 
        }) 
       } 
      </select> 
     ); 
    } 
} 

如何設置佔位符下拉列表?

Mozilla Dev Network佔位是不是在<select>有效的屬性。因此,在地方,你可以,你這也呈現一個default選項:

<option default>Select</option>

使用的關鍵DOC

鍵幫助陣營識別哪些項目已經改變,是補充,或者刪除了 。應該給數組內的元素賦予數組元素一個穩定的標識。

建議:

每當我們創建任何uidynamically在循環中,我們需要分配一個unique關鍵,每個element,使react可以很容易地識別元素,它主要用於提高performance

檢查工作示例:

class App extends React.Component { 
 

 
constructor(props) { 
 
    super(props); 
 
    this.state = { 
 
     value: '1' 
 
    }; 
 
} 
 

 
render(){ 
 
    return(
 
     <select value={this.state.value} onChange={(e)=>{this.setState({value: e.target.value})}}> 
 
      <option value='1' disabled>Select</option> 
 
      { 
 
       [2,3,4].map((i,j)=>{ 
 
        return <option key={i} value={i}>{i}</option> 
 
       }) 
 
      } 
 
     </select> 
 
    ); 
 
} 
 
} 
 

 
ReactDOM.render(<App />, document.getElementById('container'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script> 
 

 
<div id='container'/>

檢查搗鼓工作示例:https://jsfiddle.net/29uk8fn0/

+0

是的,你說得對,爲'禁用'選項指定一個唯一的值,如'-1'或'0',並給其他選項賦予適當的值。禁用一個將是默認的,所以你可以給它分配任何值。 –

+0

這裏的關鍵是給予禁用選項一個獨特的價值。對不起,我錯誤地刪除了我以前的評論。 –

相關問題