2017-01-25 62 views
0

我嘗試實現單選按鈕的renderField,我可以顯示它,但當我點擊無線電領域不填充。 當我檢查控制檯時,輸入值總是等於undefined,總是!REDX形式renderField類型無線電未定義值

這是我的代碼:

render(){ 
    const {input, array, meta, label} = this.props; 
    return(
     <div className="input-row"> 
     <div className="radio-box"> 
      {array.map((option,i) => 
      <div className="radio-field" key={i}> 
       <input type='radio' name={option.name} onChange={() => {input.onChange('oui')}} value={option.value} checked={input.value === option.value} /> 
       {/* Try this before <input type='radio' {...input} name={option.name} value={option.value} checked={input.value == option.value}/> */} 
       <label>{option.name}</label> 
      </div> 
     )} 
     </div> 
     </div> 
    ) 
    } 

我把這個用:

<Field name="courtage" type="radio" label="Courtage ?" component={renderRadioField} array={selectOptions.courtage} {...courtage} /> 

SelectOptions.courtage是對象的數組。

+0

顯示'onChange'處理類和方法的代碼。輸入值應該通過這個處理程序作爲參數 –

+0

您可以請張貼一個正確的代碼的例子來做到這一點? – user3703539

回答

0

幾個小時後,我找到一個解決方案,我與國家玩:

setRadioState(a) { 
    const obj = {}; 
    obj[a.target.name] = a.target.value; 
    this.setState(obj); 
    } 

    render(){ 
    const {input, array, meta, label, name} = this.props; 
    return(
     <div className="input-row"> 
     <div className="label-box"> 
      <label>{label}</label> 
     </div> 
     <div className="radio-box"> 
      {array.map((option,i) => 
      <div className="radio-field" key={i}> 
       <input type='radio' name={name} {...input} onChange={this.setRadioState.bind(this)} value={option.value} checked={this.state.name} /> 
       <label>{option.name}</label> 
      </div> 
     )} 
      {/* <div className="errors">{meta.touched && ((error && <span>{error}</span>))}</div> */} 
     </div> 
     </div> 
    )