質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
React Native

React Nativeは、ネイティブモバイルアプリ(iOS/Android)を作成できるJavaScriptフレームワークです。Reactと同じ設計のため、宣言的なコンポーネントでリッチなUIを開発することが可能です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

259閲覧

render(){ →return( →~~~.map( → function( → return( → ~~.map( のような階層構造の書き方。

MOTOMUR

総合スコア195

React Native

React Nativeは、ネイティブモバイルアプリ(iOS/Android)を作成できるJavaScriptフレームワークです。Reactと同じ設計のため、宣言的なコンポーネントでリッチなUIを開発することが可能です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2018/02/28 07:20

編集2018/02/28 09:50

タイトルに困ってしまいました。

コードを用いて簡単にわからないことを説明させてください。

js

1render(){ 2 return ( 3 <div> 4 { 5 this.state.sample_out.slice.map( 6 function(value){ 7 return( 8 <div> 9 { 10 this.state.sample_inner.slice.map( 11 function(value){ 12 return( 13 <div></div> 14 ) 15 } 16 ) 17 } 18 </div> 19 ) 20 } 21 } 22 </div> 23 ) 24}

このように記述したいときに、内部のthis.stateがundefinedとなってしまうと思うのですが、
縦方向のリストに、横方向のリストを入れ込む、といった構造を考えた時に、こう考えた方が僕にはわかりやすかったのですが、
このような記述は可能なのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

本来なら内部でもstateは参照出来るはずです

this.state.sample は配列でしょうか?

おそらく

js

1this.state.sample.slice.map

この時点でundefinedになっているので、sampleが配列だとしたら

js

1this.state.sample.map

が正しいと思われます

投稿2018/02/28 07:46

DotEarl

総合スコア79

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MOTOMUR

2018/02/28 09:27 編集

回答ありがとうございます。 変えてやって見ましたが、エラーは変わりませんでした。 sampleの中身は現在は [{day:'月'},{day:'火'},{day:'水'},{day:'木'},{day:'金'}] こんな感じにしています。(連想配列であってますかね?)。function(value)の引数でvalue.dayとしたいのでこの状態です。 上の階層の配列は連想配列(?)で、 [ {Start:'initial',End:'initial',koma:0}, {Start:'08:45',End:'10:15',koma:1}, {Start:'10:30',End:'12:00',koma:2}, {Start:'13:00',End:'14:30',koma:3}, {Start:'14:45',End:'16:15',koma:4}, {Start:'16:30',End:'18:00',koma:5} ] これはうまくいっています。 ちなみにあまり関係のないことだと思いますが、補足です。 内部のfunction と returnの間にif文を挟んでいます。(returnはifで条件分岐したものです。)
DotEarl

2018/02/28 09:40

上の階層と下の階層が両方 `this.state.sample` なのですが、実際は別々の名前ですよね? どちらにしろ `sample` の部分が配列なら `.slice` の部分は不要のはずです
MOTOMUR

2018/02/28 09:53 編集

質問文のsampleかぶっていましたね。すいません。 sample_out sample_innerと直しておきます。 this.state.sample_inner.map() と言うことですよね? 試して見ましたがundefinedとなってしまいます。
DotEarl

2018/02/28 09:59 編集

一度、両方 Arrow Functionにしてみて下さい ` this.state.sample_out.slice.map(value => { // ... }) `
MOTOMUR

2018/02/28 10:08

ありがとうございます!治りました。 thisの束縛の問題だったようですね。 arrowにしたら治りました。 functionを使うメリットを感じなくなってしまいますね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問