質問編集履歴
5
Content.jsにてsetCheckNameが送られていないことに気がつき、修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -16,7 +16,6 @@
|
|
16
16
|
//NAME3文字以上ででsaveボタン押せるようにdisabledを入れる
|
17
17
|
const [checkName, setCheckName] = useState(true);
|
18
18
|
console.log(props)
|
19
|
-
console.log(setCheckName)
|
20
19
|
return (
|
21
20
|
<>
|
22
21
|
<p>content</p>
|
@@ -24,6 +23,7 @@
|
|
24
23
|
<Form
|
25
24
|
onChangeId={props.onChangeId}
|
26
25
|
onChangeName={props.onChangeName}
|
26
|
+
setCheckName={setCheckName}
|
27
27
|
/>
|
28
28
|
<button type="button"
|
29
29
|
className="btn btn-outline-success"
|
@@ -138,7 +138,7 @@
|
|
138
138
|
```
|
139
139
|
|
140
140
|
##結果
|
141
|
-
NGパターンでもOKパターンでもSAVEボタンを押してもボタンが機能せず、
|
141
|
+
NGパターンでもOKパターンでもSAVEボタンを押してもボタンが機能せず、setCheckNameが参照されないエラーが出ています。
|
142
142
|
※disabled機能を追加する前まではSAVEボタンにて、ログが出せていた。(Reduxを使用)
|
143
143
|
解決方法見つけられず、、、
|
144
144
|
何か、ヒントいただけるとありがたいです。
|
4
情報を追加。Contentを扱っているファイルを追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
以下のようにコードを書きました。
|
7
7
|
※React hookを使い、stateを持たせ、disabledをbuttonにセット、ボタンを押した時に入力値のチェックを行い、
|
8
8
|
OKだったら(入力値3文字以上の場合)ボタンがdisabledがfalseになることを想定し、書きました。
|
9
|
-
|
9
|
+
####Content.js
|
10
10
|
```
|
11
11
|
'use strict';
|
12
12
|
import React,{ useState } from 'react';
|
@@ -68,7 +68,75 @@
|
|
68
68
|
)
|
69
69
|
}
|
70
70
|
```
|
71
|
+
####App.js
|
72
|
+
```
|
73
|
+
import React, { Component } from 'react';
|
71
74
|
|
75
|
+
import Aside from './components/Aside';
|
76
|
+
import Header from './components/Header';
|
77
|
+
import Footer from './components/Footer';
|
78
|
+
import Top from './components/Top';
|
79
|
+
import Content from './components/Content';
|
80
|
+
|
81
|
+
|
82
|
+
class App extends Component {
|
83
|
+
constructor(props) {
|
84
|
+
super(props);
|
85
|
+
}
|
86
|
+
|
87
|
+
// formId
|
88
|
+
onChangeId = (e) => {
|
89
|
+
console.log(e.target.value)
|
90
|
+
this.props.updateFormId(e.target.value);
|
91
|
+
}
|
92
|
+
// forName
|
93
|
+
onChangeName = (e) => {
|
94
|
+
console.log(e.target.value)
|
95
|
+
this.props.updateFormName(e.target.value);
|
96
|
+
}
|
97
|
+
// clickSaveButton
|
98
|
+
onSaveItem = () => {
|
99
|
+
console.log(this.props)
|
100
|
+
console.log("SAVE_ID: ",this.props.id);
|
101
|
+
console.log("SAVE_NAME: ",this.props.name);
|
102
|
+
}
|
103
|
+
|
104
|
+
render() {
|
105
|
+
const formItem = this.props
|
106
|
+
// formEvent
|
107
|
+
const contentHandler = ({onChangeId, onChangeName, onSaveItem}) => ({ onChangeId, onChangeName, onSaveItem })
|
108
|
+
console.log('App.render:', this.props);
|
109
|
+
|
110
|
+
return (
|
111
|
+
<div className="content">
|
112
|
+
<Aside />
|
113
|
+
<Header />
|
114
|
+
sample site
|
115
|
+
{/* <div className="row">
|
116
|
+
|
117
|
+
<div className="col-5">
|
118
|
+
<p>test</p>
|
119
|
+
</div>
|
120
|
+
</div> */}
|
121
|
+
<Top />
|
122
|
+
<br />
|
123
|
+
<br />
|
124
|
+
<br />
|
125
|
+
<div className="container">
|
126
|
+
<Content formItem={formItem} {...contentHandler(this)} />
|
127
|
+
</div>
|
128
|
+
<br />
|
129
|
+
<br />
|
130
|
+
<br />
|
131
|
+
<Footer />
|
132
|
+
</div>
|
133
|
+
);
|
134
|
+
}
|
135
|
+
}
|
136
|
+
export default App;
|
137
|
+
|
138
|
+
```
|
139
|
+
|
72
140
|
##結果
|
73
141
|
NGパターンでもOKパターンでもSAVEボタンを押してもボタンが機能せず、
|
74
142
|
※disabled機能を追加する前まではSAVEボタンにて、ログが出せていた。(Reduxを使用)
|
3
if文の書き方を変更
title
CHANGED
File without changes
|
body
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
##試したこと
|
6
6
|
以下のようにコードを書きました。
|
7
7
|
※React hookを使い、stateを持たせ、disabledをbuttonにセット、ボタンを押した時に入力値のチェックを行い、
|
8
|
-
OKだったら(入力値3文字以上の場合)ボタンがdisabledが
|
8
|
+
OKだったら(入力値3文字以上の場合)ボタンがdisabledがfalseになることを想定し、書きました。
|
9
9
|
|
10
10
|
```
|
11
11
|
'use strict';
|
@@ -13,14 +13,10 @@
|
|
13
13
|
import { createStore } from "redux";
|
14
14
|
|
15
15
|
export default function Content(props) {
|
16
|
-
//NAME3文字以上ででsaveボタン押せるようにdisabledを
|
16
|
+
//NAME3文字以上ででsaveボタン押せるようにdisabledを入れる
|
17
|
-
const [checkName, setCheckName] = useState(
|
17
|
+
const [checkName, setCheckName] = useState(true);
|
18
|
-
const judgeName = (e) => {
|
19
|
-
if (e.target.value.length >= 3){
|
20
|
-
setCheckName([{ countName: false }])
|
21
|
-
}
|
22
|
-
}
|
23
18
|
console.log(props)
|
19
|
+
console.log(setCheckName)
|
24
20
|
return (
|
25
21
|
<>
|
26
22
|
<p>content</p>
|
@@ -32,7 +28,7 @@
|
|
32
28
|
<button type="button"
|
33
29
|
className="btn btn-outline-success"
|
34
30
|
onClick={(e) => {props.onSaveItem();console.log(e)}}
|
35
|
-
disabled = {
|
31
|
+
disabled = {checkName}
|
36
32
|
>
|
37
33
|
SAVE
|
38
34
|
</button>
|
@@ -58,7 +54,13 @@
|
|
58
54
|
className="form-control"
|
59
55
|
value={props.name}
|
60
56
|
onChange={
|
57
|
+
(e) =>
|
58
|
+
{
|
59
|
+
if (e.target.value.length >= 3){
|
60
|
+
setCheckName(false)
|
61
|
-
|
61
|
+
{props.onChangeName(e)}
|
62
|
+
}
|
63
|
+
}
|
62
64
|
}
|
63
65
|
/>
|
64
66
|
</div>
|
@@ -68,7 +70,7 @@
|
|
68
70
|
```
|
69
71
|
|
70
72
|
##結果
|
71
|
-
NGパターンでもOKパターンでもSAVEボタンを押しても
|
73
|
+
NGパターンでもOKパターンでもSAVEボタンを押してもボタンが機能せず、
|
72
74
|
※disabled機能を追加する前まではSAVEボタンにて、ログが出せていた。(Reduxを使用)
|
73
75
|
解決方法見つけられず、、、
|
74
76
|
何か、ヒントいただけるとありがたいです。
|
2
hoshi-takanori さんよりstateを持つ必要があるとヒントをいただき、コード修正。
title
CHANGED
File without changes
|
body
CHANGED
@@ -9,8 +9,18 @@
|
|
9
9
|
|
10
10
|
```
|
11
11
|
'use strict';
|
12
|
+
import React,{ useState } from 'react';
|
13
|
+
import { createStore } from "redux";
|
12
14
|
|
13
15
|
export default function Content(props) {
|
16
|
+
//NAME3文字以上ででsaveボタン押せるようにdisabledを切り替える
|
17
|
+
const [checkName, setCheckName] = useState([{ countName: true }]);
|
18
|
+
const judgeName = (e) => {
|
19
|
+
if (e.target.value.length >= 3){
|
20
|
+
setCheckName([{ countName: false }])
|
21
|
+
}
|
22
|
+
}
|
23
|
+
console.log(props)
|
14
24
|
return (
|
15
25
|
<>
|
16
26
|
<p>content</p>
|
@@ -22,7 +32,8 @@
|
|
22
32
|
<button type="button"
|
23
33
|
className="btn btn-outline-success"
|
24
34
|
onClick={(e) => {props.onSaveItem();console.log(e)}}
|
35
|
+
disabled = {judgeName}
|
25
|
-
|
36
|
+
>
|
26
37
|
SAVE
|
27
38
|
</button>
|
28
39
|
</>
|
@@ -35,25 +46,20 @@
|
|
35
46
|
<form>
|
36
47
|
<div className="form-group">
|
37
48
|
<label className="pt-2">ID</label>
|
38
|
-
<input id="
|
49
|
+
<input id="id"
|
39
50
|
type="text"
|
40
51
|
className="form-control"
|
41
52
|
value={props.id}
|
42
53
|
onChange={(e) => props.onChangeId(e)}
|
43
54
|
/>
|
44
55
|
<label className="pt-2">Name</label>
|
45
|
-
<input id="
|
56
|
+
<input id="name"
|
46
57
|
type="text"
|
47
58
|
className="form-control"
|
48
59
|
value={props.name}
|
49
60
|
onChange={
|
50
61
|
(e) => props.onChangeName(e)
|
51
62
|
}
|
52
|
-
disabled = {(e)=>{
|
53
|
-
if (e.target.value.length < 3) {
|
54
|
-
true
|
55
|
-
}else{false}
|
56
|
-
}}
|
57
63
|
/>
|
58
64
|
</div>
|
59
65
|
</form>
|
1
hoshi-takanori さんよりstateを持つ必要があるとヒントをいただき、コード修正。
title
CHANGED
File without changes
|
body
CHANGED
@@ -4,6 +4,9 @@
|
|
4
4
|
|
5
5
|
##試したこと
|
6
6
|
以下のようにコードを書きました。
|
7
|
+
※React hookを使い、stateを持たせ、disabledをbuttonにセット、ボタンを押した時に入力値のチェックを行い、
|
8
|
+
OKだったら(入力値3文字以上の場合)ボタンがdisabledがtrueになることを想定し、書きました。
|
9
|
+
|
7
10
|
```
|
8
11
|
'use strict';
|
9
12
|
|
@@ -58,6 +61,10 @@
|
|
58
61
|
}
|
59
62
|
```
|
60
63
|
|
64
|
+
##結果
|
65
|
+
NGパターンでもOKパターンでもSAVEボタンを押してもログが出されず、ボタンが非活性にもなりませんでした。
|
61
|
-
|
66
|
+
※disabled機能を追加する前まではSAVEボタンにて、ログが出せていた。(Reduxを使用)
|
67
|
+
解決方法見つけられず、、、
|
62
|
-
|
68
|
+
何か、ヒントいただけるとありがたいです。
|
69
|
+
|
63
|
-
よろしくお願いします。
|
70
|
+
また、必要な情報があれば追記します。よろしくお願いします。
|