質問編集履歴

6

まとめ

2018/02/14 02:44

投稿

cheche0830
cheche0830

スコア187

test CHANGED
File without changes
test CHANGED
@@ -159,3 +159,51 @@
159
159
  setTimeout0秒で入れてみるとconsole.logの部分は正しい値が表示されました!
160
160
 
161
161
  ただ、this.setStateの部分がUncaught TypeError: this.setState is not a functionというエラーになってしまいました・・・
162
+
163
+
164
+
165
+ ---
166
+
167
+ 追記5
168
+
169
+ ```ここに言語を入力
170
+
171
+ constructor(props) {
172
+
173
+ super(props);
174
+
175
+ this.state = {
176
+
177
+ topPartsHeight: null
178
+
179
+ };
180
+
181
+ }
182
+
183
+ componentDidMount() {
184
+
185
+ process.nextTick(() => {
186
+
187
+ const elem = this.topParts;
188
+
189
+ this.setState({
190
+
191
+ topPartsHeight: elem.clientHeight
192
+
193
+ })
194
+
195
+ })
196
+
197
+ }
198
+
199
+
200
+
201
+ render() {
202
+
203
+ return (
204
+
205
+ <div ref={(div) => {this.topParts = div }} style={{height:this.state.topPartsHeight}}>
206
+
207
+ ```
208
+
209
+ 上記で実現したいことができました!みなさんありがとうございました。

5

setTimeout追加

2018/02/14 02:44

投稿

cheche0830
cheche0830

スコア187

test CHANGED
File without changes
test CHANGED
@@ -129,3 +129,33 @@
129
129
  このようにクリックしてから高さを取得したらちゃんとした値が取得できました。
130
130
 
131
131
  これを読み込んだ段階で取得できると良いのですが・・・
132
+
133
+
134
+
135
+
136
+
137
+ ---
138
+
139
+ 追記4
140
+
141
+ ```ここに言語を入力
142
+
143
+ componentDidMount() {
144
+
145
+ var test = this.refs.toph;
146
+
147
+ setTimeout(function() {
148
+
149
+ console.log(test.clientHeight);
150
+
151
+ this.setState({hheight: test.clientHeight})
152
+
153
+ },0)
154
+
155
+ }
156
+
157
+ ```
158
+
159
+ setTimeout0秒で入れてみるとconsole.logの部分は正しい値が表示されました!
160
+
161
+ ただ、this.setStateの部分がUncaught TypeError: this.setState is not a functionというエラーになってしまいました・・・

4

クリック後に取得するとちゃんと取れる

2018/02/13 09:37

投稿

cheche0830
cheche0830

スコア187

test CHANGED
File without changes
test CHANGED
@@ -87,3 +87,45 @@
87
87
  実寸は42pxなのですが、帰ってくる数字は48です。。。
88
88
 
89
89
  ここに要素が入れば入るほどその数字の乖離がはげしくなっていきます・・・
90
+
91
+
92
+
93
+ ---
94
+
95
+ 追記3
96
+
97
+
98
+
99
+ ```ここに言語を入力
100
+
101
+ clicks() {
102
+
103
+ var test = this.refs.toph;
104
+
105
+ console.log(test.clientHeight);
106
+
107
+ }
108
+
109
+ render() {
110
+
111
+ return (
112
+
113
+ <section>
114
+
115
+ <div ref="toph" onClick={this.clicks}>a<br />b</div>
116
+
117
+ <Contents />
118
+
119
+ </section>
120
+
121
+ );
122
+
123
+ }
124
+
125
+ ```
126
+
127
+
128
+
129
+ このようにクリックしてから高さを取得したらちゃんとした値が取得できました。
130
+
131
+ これを読み込んだ段階で取得できると良いのですが・・・

3

微調整

2018/02/13 08:43

投稿

cheche0830
cheche0830

スコア187

test CHANGED
File without changes
test CHANGED
@@ -68,21 +68,11 @@
68
68
 
69
69
  return (
70
70
 
71
- <section className={theme.center}>
72
-
73
- <div className={theme.in}>
71
+ <section>
74
72
 
75
73
  <div ref="toph">a<br />b</div>
76
74
 
77
75
  <Contents />
78
-
79
-
80
-
81
- </div>
82
-
83
-
84
-
85
-
86
76
 
87
77
  </section>
88
78
 

2

refsで作り変え

2018/02/13 07:17

投稿

cheche0830
cheche0830

スコア187

test CHANGED
File without changes
test CHANGED
@@ -43,3 +43,57 @@
43
43
  残ったエリア内をoverflow scrollでスクロールエリアにしたく、
44
44
 
45
45
  ブラウザの高さが変更されても再計算して常に画面に吸着した状態にすることが目的です。
46
+
47
+
48
+
49
+ ----
50
+
51
+ 追記2
52
+
53
+ refsを使ったやり方に変えてみましたが帰ってくる数字はまだ変わりませんでした。念のため記します。
54
+
55
+
56
+
57
+ ```ここに言語を入力
58
+
59
+ componentDidMount() {
60
+
61
+ var test = this.refs.toph;
62
+
63
+ console.log(test.clientHeight);
64
+
65
+ }
66
+
67
+ render() {
68
+
69
+ return (
70
+
71
+ <section className={theme.center}>
72
+
73
+ <div className={theme.in}>
74
+
75
+ <div ref="toph">a<br />b</div>
76
+
77
+ <Contents />
78
+
79
+
80
+
81
+ </div>
82
+
83
+
84
+
85
+
86
+
87
+ </section>
88
+
89
+ );
90
+
91
+ }
92
+
93
+ ```
94
+
95
+ tophの部分はわかりやすいように省略しました。
96
+
97
+ 実寸は42pxなのですが、帰ってくる数字は48です。。。
98
+
99
+ ここに要素が入れば入るほどその数字の乖離がはげしくなっていきます・・・

1

実現したい機能を追記

2018/02/13 07:16

投稿

cheche0830
cheche0830

スコア187

test CHANGED
File without changes
test CHANGED
@@ -31,3 +31,15 @@
31
31
  推測ですが、cssが当たる前の要素が縦に並んだ上体の時の
32
32
 
33
33
  高さを引っ張ってきてるようなきがしています・・
34
+
35
+
36
+
37
+ ----
38
+
39
+ 追記
40
+
41
+ やりたいことはtophの高さを取得してウィンドウ高さからマイナスします。
42
+
43
+ 残ったエリア内をoverflow scrollでスクロールエリアにしたく、
44
+
45
+ ブラウザの高さが変更されても再計算して常に画面に吸着した状態にすることが目的です。