回答編集履歴

1

追記

2019/10/07 04:34

投稿

guissy-k
guissy-k

スコア245

test CHANGED
@@ -13,3 +13,69 @@
13
13
 
14
14
 
15
15
  最初の方で躓いていたとしたら、一つずつ解決する必要がある(複数の問題を孕んでいる)可能性があるためです。
16
+
17
+
18
+
19
+ ## (追記)
20
+
21
+
22
+
23
+ 上記4でundefinedになるということで、参照のオブジェクトに対してObject.assignをしようとしているため上手く動いていないものと思われます。
24
+
25
+ 参考:[深い複製についての注意](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Deep_Clone)
26
+
27
+ lodash.jsを使って、下記のようにディープコピーしたオブジェクトを使って書いてみてください。
28
+
29
+ ```diff
30
+
31
+ + import * as _ from 'lodash';
32
+
33
+
34
+
35
+ export const loginReducer=(
36
+
37
+ state:ICountState=initCountState,
38
+
39
+ action:LoginAction)=> {
40
+
41
+ switch (action.type) {
42
+
43
+ + const newState:ICountState = _.cloneDeep(state);
44
+
45
+ case 'changeEmail':
46
+
47
+ + newState.email = action.payload.email;
48
+
49
+ + return newState;
50
+
51
+ - return (
52
+
53
+ - Object.assign({}, state, {email: action.payload.email})
54
+
55
+ - );
56
+
57
+ case 'changePassword':
58
+
59
+ + newState.password = action.payload.password;
60
+
61
+ + return newState;
62
+
63
+ - return (
64
+
65
+ - Object.assign({}, state, {password: action.payload.password})
66
+
67
+ - );
68
+
69
+ default:
70
+
71
+ + return newState;
72
+
73
+ - return state;
74
+
75
+ }
76
+
77
+ }
78
+
79
+
80
+
81
+ ```