2017-05-23 8 views
-1

私はreactjsに新しいです - 私はチェックボックスが選択されたら状態を設定しようとしました - そして、私が状態を読み込むと、状態が表示されることがわかりますconsole.log( 'state'、state ) - {{option1 ':true}を返します。しかし、私がthis.state.lengthを実行すると、その定義は無効になります。状態が設定されている場合、Reactjs submitHandler

+0

オブジェクトは、デフォルトでは何の 'length'性質を持っていない、多分あなたは、配列とそれを混乱していますか? – Li357

+0

well - {'option1':true、 'option2':true、 'option3':true}のように値が設定されているかどうかを知るには –

+0

キーを取得し、その配列の長さ: 'Object。キー(this.state).length' – Li357

答えて

1

理由は非常に簡単です:状態はオブジェクトですその長さはundefinedです。

key-valueペアがいくつあるかを確認する場合は、Object.keysを使用すると、すべてのキーのうちarrayが返され、長さが使用されます。このよう

console.log(Object.keys(this.state).length)

チェックこのスニペット:

let obj = {'option1': true, 'option2': true, 'option3': true}; 
 

 
console.log(Object.keys(obj).length);

+0

私はいつも常に配列を使って作業します - しかし、これはオブジェクトにプッシュするだけです –

+0

嬉しいことに、 'Object.keys()'の詳細を確認してください:https ://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/keys –

+0

私はこれまでに遭遇しましたが、まれに配列カプセル化のないオブジェクトが増加しているかどうかをチェックします私はいつも物事を配列に入れます。そのようなオブジェクトが複数あるとしたら –

関連する問題