2017-04-19 25 views
6

tôi gặp sự cố khi chọn phản ứng. Tôi sử dụng hình thức redux và tôi đã làm cho thành phần phản ứng chọn của tôi tương thích với hình thức redux. Đây là mã:Cách đặt giá trị mặc định trong phản ứng chọn

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} 
     /> 
    ); 

và ở đây làm thế nào tôi làm cho nó:

<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> 

Nhưng vấn đề là rằng thả xuống của tôi có không phải là một giá trị mặc định như tôi muốn. Những gì tôi đang làm sai? Bất kỳ ý tưởng?

+0

này là đúng: value = {props.input.value}. vấn đề bạn phải đối mặt là gì? – Ved

+0

Vấn đề của tôi là tôi muốn chọn của tôi để có defaultValue khi tôi lần đầu tiên render nó nhưng tôi không thể – user7334203

+1

giá trị của props.input.value khi nó hiển thị đầu tiên là gì? – Ved

Trả lời

5

Tôi đoán bạn cần một cái gì đó như thế này

<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

Điểm trong ràng buộc với redux/phản ứng là vì vậy ui phản ánh giá trị của đối tượng trong thời gian thực. cách tiếp cận này decouples rằng ràng buộc. Xem xét thiết lập giá trị mặc định trong bộ giảm tốc. –

+0

@JosephJuhnke kiểm tra câu hỏi trước. Đó là cách đặt giá trị mặc định. – Ved

5

Tôi đã có một lỗi tương tự. Đảm bảo các tùy chọn của bạn có thuộc tính giá trị.

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

Sau đó, khớp giá trị phần tử chọn ban đầu với giá trị tùy chọn.

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

Tôi nghĩ đây là giải pháp tốt nhất/thanh lịch nhất. Tôi có đúng trong suy nghĩ đó không? – user2026178

2

Tôi đã tự mình thực hiện điều này và chọn đặt giá trị mặc định ở hàm INIT của bộ giảm tốc.

Nếu bạn ràng buộc lựa chọn của bạn bằng redux thì tốt nhất là không 'bỏ liên kết' nó với giá trị mặc định được chọn không đại diện cho giá trị thực, thay vào đó đặt giá trị khi bạn khởi tạo đối tượng.

1

Nếu lựa chọn của bạn là như thế này

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

bạn {props.input.value} phải phù hợp với một trong những 'value' trong bạn {props.options}

Ý nghĩa, props.input.value nên một trong hai 'one' hoặc 'two'

Các vấn đề liên quan