2017-03-02 2 views
2

ラジオ入力のための制御されたコンポーネントを作成しました。
ラベルをクリックしない限り、ラジオボタンはチェックされません。ラベルがクリックされたときのラジオ入力の変化のみ

実際のバックエンド状態の値が変更され、 'checked'属性に使用しているロジックが起動していますが、正しくレンダリングしたくありません。

(この例では、私は私が私の目的のために作成したカスタムフィールドオブジェクトを使用しています。)

function RadioInput (props) { 

    return (
     <input 
      type='radio' 
      name={props.field.name} 
      disabled={props.field.disabled} 
      onChange={ (evt) => {console.log('fire onChange'); props.field.onChange(props.choice) } } 
      onFocus={ (evt) => props.field.onFocus(evt) } 
      onBlur={ (evt) => props.field.onBlur(evt) } 
      style={errStyle} 

      id={props.field.name + '-' + props.choice} 
      value={props.choice} 
      checked={(console.log('fire checked', props.field.name, props.choice, props.field.value, props.choice === props.field.value)) || (props.choice === props.field.value) } 
     /> 
    ) 
} 

私は、実際のラジオボタンをクリックしたときに、私がチェックから発射ログ出力を見ることができますし、すべての値が正しい。それはちょうど適切にレンダリングしたくありません。

この入力用のラベルをクリックすると、同じコンソール出力が生成されますが、無線チェック状態が正しく表示されます。

私は間違っていますか?

更新: ラベルの機能がありません。ただhtmlFor

<label htmlFor={"radio button name"}>LABEL TEXT</> 

アップデート2でまっすぐなラベルを使用して: は、ここでは、この作品実証codepenです。 http://codepen.io/anon/pen/pegxyr?editors=0010

私は

Update3とこれを理解するために私のコードを再検討することになります: を私はあきらめ、ちょうどカスタムCSS]ラジオボタンを作りました。これは、私が通常期待しているような形でタブすることができないので、理想よりもはるかに少ないです。超イライラ。

+0

checkedプロパティの値はtrueに設定する必要があります。 をチェックしてみてください= {props.field.val === true}このようなことをしてから、props.field.valueをtrueにしてみましょうか? – Nitesh

+0

ラベルとして使用している機能を表示できますか? –

+0

@nitesh:checkedプロパティはtrueまたはfalseのいずれかになります。ここの値は正しくなければなりません。さもなければラベルをクリックするとどちらもうまくいかないでしょう。 –

答えて

1

これはうまくいかない理由はありません。問題はonChange関数にある可能性があります。これは変更されません。または、Inputコンポーネントに渡す値に問題がある可能性があります。

私はあなたのための作業例を作成しました:http://codepen.io/DeividasK/pen/bqEmGp

たぶん私はあなたが正常にコンポーネントを更新することができます何をやったか照合することによって。

+0

ペンを一緒に入れていただきありがとうございます。私は何をやっているのかと少し似ています。あなたが言及しているように、これがうまくいかない理由はないので、私の側のローカルなものでなければなりません。 http://codepen.io/anon/pen/pegxyr?editors=0010 –

+0

@ w--あなたはまだ助けが必要ですか、それとも解決されますか?それでもなお助けが必要な場合は、変更されたペンをOPに追加することができれば、私はそれを見ることができます。 –

+0

私は何を持っているのか再検討するつもりです。私はちょうど今私の変更されたペンを貼り付ける前に入力を押す。私はコメントを編集しました。私はOPにも入れます –

関連する問題