2017-04-19 13 views
6

私は反応選択を使用して問題があります。私はredux形式を使用し、私はredux形式と互換性のある私の反応選択コンポーネントを作った。私はそれをレンダリングする方法を反応選択でデフォルト値を設定するには

const MySelect = props => (
    <Select 
     {...props} 
     value={props.input.value} 
     onChange={value => props.input.onChange(value)} 
     onBlur={() => props.input.onBlur(props.input.value)} 
     options={props.options} 
     placeholder={props.placeholder} 
     selectedValue={props.selectedValue} 
     /> 
    ); 

、ここで:ここでは、コードです

<div className="select-box__container"> 
        <Field 
        id="side" 
        name="side" 
        component={SelectInput} 
        options={sideOptions} 
        clearable={false} 
        placeholder="Select Side" 
        selectedValue={label: 'Any', value: 'Any'} 
        /> 
       </div> 

は、しかし、問題は、私のドロップダウンがないデフォルト値を持っていることを私が望むようにということです。私は間違っているの?何か案は?

+0

のいずれかである必要があり、これは正しいです:値= {props.input.value}。あなたが直面している問題は何ですか? – Ved

+0

私の問題は、最初のレンダリング時にselectValueを持つことができますが、それはできません。 – user7334203

+1

最初にレンダリングするときのprops.input.valueの値は何ですか? – Ved

答えて

5

私はあなたが私が同様のエラーを持っていたこの

<Select 
    {...props} 
    value={props.input.value?props.input.value:"Any"} 
    onChange={value => props.input.onChange(value)} 
    onBlur={() => props.input.onBlur(props.input.value)} 
    options={props.options} 
    placeholder={props.placeholder} 
    selectedValue={props.selectedValue} 
    /> 
); 
+0

redux/reactとのバインディングのポイントは、uiがオブジェクトの値をリアルタイムで反映するようになっています。このアプローチは、そのバインディングを切り離します。減速機のデフォルト値を設定することを検討してください。 –

+0

@JosephJuhnke質問を最初に確認してください。デフォルト値を設定する方法です。 – Ved

5

ようなものが必要と思います。オプションに値属性が設定されていることを確認してください。

<option key={index} value={item}> {item} </option> 

次に、最初に選択要素の値をオプションの値に一致させます。

<select 
    value={this.value} /> 
+0

これは最高の/最もエレガントなソリューションだと思います。私はそれを考えて正しいのでしょうか? – user2026178

2

私はちょうどこれを通過し、減速機のINIT機能でデフォルト値を設定することを選択しました。

選択をreduxでバインドした場合、実際の値を表さない選択されたデフォルト値で「デバインド」しないでください。オブジェクトを初期化するときに値を設定してください。

1

あなたのオプションは、この

var options = [ 
    { value: 'one', label: 'One' }, 
    { value: 'two', label: 'Two' } 
]; 

ようにしている場合{props.input.value}があなたの{props.options}

意味で'value'のいずれかと一致しなければならないあなた、props.input.value'one'または'two'

関連する問題