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

質問編集履歴

6

まとめ

2018/02/14 02:44

投稿

cheche0830
cheche0830

スコア187

title CHANGED
File without changes
body CHANGED
@@ -78,4 +78,28 @@
78
78
  }
79
79
  ```
80
80
  setTimeout0秒で入れてみるとconsole.logの部分は正しい値が表示されました!
81
- ただ、this.setStateの部分がUncaught TypeError: this.setState is not a functionというエラーになってしまいました・・・
81
+ ただ、this.setStateの部分がUncaught TypeError: this.setState is not a functionというエラーになってしまいました・・・
82
+
83
+ ---
84
+ 追記5
85
+ ```ここに言語を入力
86
+ constructor(props) {
87
+ super(props);
88
+ this.state = {
89
+ topPartsHeight: null
90
+ };
91
+ }
92
+ componentDidMount() {
93
+ process.nextTick(() => {
94
+ const elem = this.topParts;
95
+ this.setState({
96
+ topPartsHeight: elem.clientHeight
97
+ })
98
+ })
99
+ }
100
+
101
+ render() {
102
+ return (
103
+ <div ref={(div) => {this.topParts = div }} style={{height:this.state.topPartsHeight}}>
104
+ ```
105
+ 上記で実現したいことができました!みなさんありがとうございました。

5

setTimeout追加

2018/02/14 02:44

投稿

cheche0830
cheche0830

スコア187

title CHANGED
File without changes
body CHANGED
@@ -63,4 +63,19 @@
63
63
  ```
64
64
 
65
65
  このようにクリックしてから高さを取得したらちゃんとした値が取得できました。
66
- これを読み込んだ段階で取得できると良いのですが・・・
66
+ これを読み込んだ段階で取得できると良いのですが・・・
67
+
68
+
69
+ ---
70
+ 追記4
71
+ ```ここに言語を入力
72
+ componentDidMount() {
73
+ var test = this.refs.toph;
74
+ setTimeout(function() {
75
+ console.log(test.clientHeight);
76
+ this.setState({hheight: test.clientHeight})
77
+ },0)
78
+ }
79
+ ```
80
+ setTimeout0秒で入れてみるとconsole.logの部分は正しい値が表示されました!
81
+ ただ、this.setStateの部分がUncaught TypeError: this.setState is not a functionというエラーになってしまいました・・・

4

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

2018/02/13 09:37

投稿

cheche0830
cheche0830

スコア187

title CHANGED
File without changes
body CHANGED
@@ -42,4 +42,25 @@
42
42
  ```
43
43
  tophの部分はわかりやすいように省略しました。
44
44
  実寸は42pxなのですが、帰ってくる数字は48です。。。
45
- ここに要素が入れば入るほどその数字の乖離がはげしくなっていきます・・・
45
+ ここに要素が入れば入るほどその数字の乖離がはげしくなっていきます・・・
46
+
47
+ ---
48
+ 追記3
49
+
50
+ ```ここに言語を入力
51
+ clicks() {
52
+ var test = this.refs.toph;
53
+ console.log(test.clientHeight);
54
+ }
55
+ render() {
56
+ return (
57
+ <section>
58
+ <div ref="toph" onClick={this.clicks}>a<br />b</div>
59
+ <Contents />
60
+ </section>
61
+ );
62
+ }
63
+ ```
64
+
65
+ このようにクリックしてから高さを取得したらちゃんとした値が取得できました。
66
+ これを読み込んだ段階で取得できると良いのですが・・・

3

微調整

2018/02/13 08:43

投稿

cheche0830
cheche0830

スコア187

title CHANGED
File without changes
body CHANGED
@@ -33,14 +33,9 @@
33
33
  }
34
34
  render() {
35
35
  return (
36
- <section className={theme.center}>
37
- <div className={theme.in}>
36
+ <section>
38
37
  <div ref="toph">a<br />b</div>
39
38
  <Contents />
40
-
41
- </div>
42
-
43
-
44
39
  </section>
45
40
  );
46
41
  }

2

refsで作り変え

2018/02/13 07:17

投稿

cheche0830
cheche0830

スコア187

title CHANGED
File without changes
body CHANGED
@@ -20,4 +20,31 @@
20
20
  追記
21
21
  やりたいことはtophの高さを取得してウィンドウ高さからマイナスします。
22
22
  残ったエリア内をoverflow scrollでスクロールエリアにしたく、
23
- ブラウザの高さが変更されても再計算して常に画面に吸着した状態にすることが目的です。
23
+ ブラウザの高さが変更されても再計算して常に画面に吸着した状態にすることが目的です。
24
+
25
+ ----
26
+ 追記2
27
+ refsを使ったやり方に変えてみましたが帰ってくる数字はまだ変わりませんでした。念のため記します。
28
+
29
+ ```ここに言語を入力
30
+ componentDidMount() {
31
+ var test = this.refs.toph;
32
+ console.log(test.clientHeight);
33
+ }
34
+ render() {
35
+ return (
36
+ <section className={theme.center}>
37
+ <div className={theme.in}>
38
+ <div ref="toph">a<br />b</div>
39
+ <Contents />
40
+
41
+ </div>
42
+
43
+
44
+ </section>
45
+ );
46
+ }
47
+ ```
48
+ tophの部分はわかりやすいように省略しました。
49
+ 実寸は42pxなのですが、帰ってくる数字は48です。。。
50
+ ここに要素が入れば入るほどその数字の乖離がはげしくなっていきます・・・

1

実現したい機能を追記

2018/02/13 07:16

投稿

cheche0830
cheche0830

スコア187

title CHANGED
File without changes
body CHANGED
@@ -14,4 +14,10 @@
14
14
  何か対応方法はありますでしょうか?
15
15
 
16
16
  推測ですが、cssが当たる前の要素が縦に並んだ上体の時の
17
- 高さを引っ張ってきてるようなきがしています・・
17
+ 高さを引っ張ってきてるようなきがしています・・
18
+
19
+ ----
20
+ 追記
21
+ やりたいことはtophの高さを取得してウィンドウ高さからマイナスします。
22
+ 残ったエリア内をoverflow scrollでスクロールエリアにしたく、
23
+ ブラウザの高さが変更されても再計算して常に画面に吸着した状態にすることが目的です。