2016-10-18 4 views
0

Reactでは何か不思議なことに直面しています。React setState:ネストされたプロパティを文字列で設定します。

私の目標:コンポーネントステータスの特定の属性を更新します。これはネストされた属性にすることができます。しかし!私はそれを動的に更新したい(一束の入力に対してonChange呼び出しを行い、onChange関数をコード化したくない、汎用のコードをコードしたい)。作品

例:次に

this.state = { value: 0 } 

var attribute = 'value' 
var value = 'myvalue' 
this.setState({[attribute]:value}) 

例は機能しません。そして、

this.state = { nested: { value: 0 } } 

var attribute = 'nested.value' 
var value = 'myvalue' 
this.setState({[attribute]:value}) 

可能な限り多くのネストレベルを持つことができます。私はそれに対処するための一般的で簡単な方法を見出したいと思います。私はのonchange機能と、それを実装しようとしているよう

私はJSFiddleウィッヒを作成したが、この問題を再現:http://jsfiddle.net/n61kv6gy/

は、誰もがアイデアを持っていますか?その後、変更を行い、

onChange(value,e) { 
    let oldState = this.state.nested.nestedAgain; 
    let newState = this.state.nested.nestedAgain; 
    newState[value] = e.target.value; 

    this.setState({oldState: newState}) 
} 

まずクローンあなたの状態を、最後に状態を更新:私はあなたの質問を理解している場合

+1

「更新」を調べましたか?関連:http://stackoverflow.com/questions/25008322/updating-deep-reactjs-state – Li357

答えて

2

よ、あなたのonChange関数内でこのような何かを試すことができます。ここで

jsfiddle

+0

こんにちは、あなたの答えに感謝します。それは部分的に仕事をすることができます。 (... [OK]を使用すると、自動投稿のコメントをStackOverflowの感謝) –

+0

我々は状態はこのように構成されていると仮定しましょう { をvalue1:1、 ネストされた:{ 値2:2、 nestedagain: { } } –

+0

この状態: –

0

OKスタックオーバーフローコメント機能は非常にlackyです。私はここに@Bokyに答えます:

こんにちは多くのあなたの答えに感謝します。それは部分的に仕事です。これらの3つのプロパティをバインドするためにコードをどのように変更しますか?

{ 
    value1: 1, 
    nested: { 
     value2: 2, 
     nestedAgain: { 
     value3: 3 
     } 
    } 
} 
+0

更新された答えを参照してください。あなたはそのようなものを試してみることもできます。 – Boky

関連する問題