teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

5

Content.jsにてsetCheckNameが送られていないことに気がつき、修正

2021/01/11 11:36

投稿

yuki-o0413
yuki-o0413

スコア8

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を扱っているファイルを追加

2021/01/11 11:36

投稿

yuki-o0413
yuki-o0413

スコア8

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文の書き方を変更

2021/01/10 10:41

投稿

yuki-o0413
yuki-o0413

スコア8

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がtrueになることを想定し、書きました。
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([{ countName: true }]);
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 = {judgeName}
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
- (e) => props.onChangeName(e)
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を持つ必要があるとヒントをいただき、コード修正。

2021/01/10 07:31

投稿

yuki-o0413
yuki-o0413

スコア8

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="1"
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="2"
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を持つ必要があるとヒントをいただき、コード修正。

2021/01/07 00:29

投稿

yuki-o0413
yuki-o0413

スコア8

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
- 結果、挙動がdisabledを付けなかった時と変わらず保存できしまました。
66
+ disabled機能追加する前まではSAVEボタンにてログ出せていた。(Reduxを使用)
67
+ 解決方法見つけられず、、、
62
- 期待する動きを実現するためにアドバイスいただけるとありがたいです。
68
+ 何かヒントいただけるとありがたいです。
69
+
63
- よろしくお願いします。
70
+ また、必要な情報があれば追記します。よろしくお願いします。