mapでstateによって繰り返し描画をしているとします。
例えば。
js
1this.state = { 2 Items:['0','1','2'], 3 refers:[{message:yeah},{message:hey},{message:awsome}] 4}
のようなstateがあり、inputにより、中身を参照し、中身を変更したいとします。
イメージ的にこうやって書けばできると思って、下のように描いて見ました。
js
1<List> 2 { 3 this.state.Items.map( 4 key => { 5 <ListItem> 6 <input onChangeText={(input) => this.setState({refers[key].message:input}) 7 value={this.state.refers[key].message} 8 </ListItem> 9 } 10 ) 11 } 12</List>
これだとうまくsyntax的にできないようなのですね。
なぜこのようなことをしているかと言いますと、
Itemsもinputにより変化して、その各々についてさらにrefersの中身を設定する、といった構造で依存関係になっているからです。
(作成中のコードで困っているのはrefersがさらに他にも内容がある状態ですが、これがわかれば同じだと思っているので、この質問としています。)
このような場合、どのように対処するのが正しいでしょうか?
このやり方は間違っていますでしょうか?
コード追記
(settingTime, key) => { 〜〜〜〜〜〜〜〜〜〜〜〜〜 <Input style={{marginTop:-15}} onChangeText={(input) => this.handleInputChange_S_H(input,key).bind(this)} value={(this.state.komaTime[key] !== undefined) ? this.state.komaTime[key].START_HOUR : ''}/> handleInputChange_S_H = (input,key) => { const newKomaTime = update(this.state.komaTime, {[key]: {START_HOUR: {$set: input}}}) this.setState({komaTime: newKomaTime}) }
追加質問
immutabilityな記述をmapのなかで。
js
1var keys = [ [0,0], [0,1] ] 2keys.map( 3 key => { 4 var keyWhatDay = key[0] 5 var keyWhatTime = key[1] 6 var newSchedule = update(this.state.schedule, { [keyWhatDay] : { [keyWhatTime] : { STATUS : { $set: true }, ID : { $set: ID } } } }) 7 8 this.setState({schedule:newSchedule}) 9 } 10)
このような記述が必要であった場合、mapとupdateの相性はよくないように見えるのですが、どうなのでしょうか。
現在の書き方だと、scheduleを更新することはできません。
keysは変動するので、map以外の方法は思いつかなかったです。
どのようにしたらうまく動作させられるのでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/02 10:13
2018/03/02 10:20
2018/03/02 10:46 編集
2018/03/02 11:39
2018/03/02 12:16
2018/03/02 12:41
2018/03/02 13:59
2018/03/03 06:17
2018/03/03 06:20
2018/03/03 06:21
2018/03/03 10:36
2018/03/03 17:10
2018/03/04 05:09
2018/03/04 06:13
2018/03/04 11:38
2018/03/04 14:57
2018/03/05 15:34
2018/03/10 13:59
2018/03/10 14:19
2018/03/10 14:25