2016-09-15 126 views
0

我試圖做這樣的事情用終極版形式:Redux的範圍選擇

Age range selector

的問題是,我有外地的年齡。我不能讓它有兩個值(它只存儲一個值)

let options = [1,2,3,4,5,6,7]; // etc... a lot of ages 
    // field is a redux field 

    // Minimum 
    <select {...age} value={age|| 'select'} multi={true}> 
    <option key='default' value='default'>Select</option> 
    {      
     options.map(option => 
     <option key={option}>{option}</option> 
    )     
    } 
    </select> 

// Maximum 
    <select {...age} value={age|| 'select'} multi={true}> 
    <option key='default' value='default'>Select</option> 
    {      
     options.map(option => 
     <option key={option}>{option}</option> 
    )     
    } 
    </select> 

我不想這樣做:

let options = [1,2,3,4,5,6,7]; // etc... a lot of ages 
    // field is a redux field 

    // Minimum 
    <select {...minimumAge} value={minimumAge|| 'select'} multi={true}> 
    <option key='default' value='default'>Select</option> 
    {      
     options.map(option => 
     <option key={option}>{option}</option> 
    )     
    } 
    </select> 

// Maximum 
    <select {...maximumAge} value={maximumAge|| 'select'} multi={true}> 
    <option key='default' value='default'>Select</option> 
    {      
     options.map(option => 
     <option key={option}>{option}</option> 
    )     
    } 
    </select> 
+0

檢查是否將相同的字段引用傳遞給兩個選擇。 – elmeister

回答

0

難道是創建一個組件的選項你多次使用?

// SelectComponent 
const { options, field } = this.props; 
<select {...field} value={field.value || 'select'} multi={true}> 
    <option key='default' value="select">Select</option> 
    {      
    options.map(option => 
     <option key={option}>{option}</option> 
    )     
    } 
</select> 

然後使用它們像這樣:

const ages = [ 1, 2, 3, 4, 5, 6, 7 ]; 
<SelectComponent options={ages} field={minAge} /> 
<SelectComponent options={ages} field={maxAge} /> 

如果你想保存在你的終極版狀態多個值,你需要在你的狀態2處反正。

+0

這將是一個選項。有兩個領域將使這非常簡單。我試圖做到這一點,而不需要minAge和maxAge(只是'年齡') –

+0

但是,你會如何定義範圍?你可以將它保存爲一個數組或其他東西,但爲什麼你會這麼難? –