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

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

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

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

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

React.js

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

Q&A

解決済

1回答

2445閲覧

React で縦2列の表現がしたいです

退会済みユーザー

退会済みユーザー

総合スコア0

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

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

React.js

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

0グッド

0クリップ

投稿2018/08/13 04:18

編集2018/08/13 05:02

React で縦2列の表現がしたいです

Reactを使って横2列の表示をしようとしてるのですが、うまくいきません。
Apple
Orange
Banana
Mango

Apple
Orange
Banana
Mango

現状ではこの様になっています。

縦2列での表現が出来ません。

該当のソースコード

Javascript

1import React, { Component } from 'react' 2import './App.css' 3 4import request from 'superagent' 5 6class App extends Component { 7 constructor (props) { 8 super(props) 9 this.state = { 10 items: null 11 } 12 } 13 componentWillMount () { 14 request.get('./fruits.json') 15 .accept('application/json') 16 .end((err, res) => { 17 this.loadedJSON(err, res) 18 }) 19 } 20 loadedJSON (err, res) { 21 if (err) { 22 console.log('JSON読み込みエラー') 23 return 24 } 25 this.setState({ 26 items: res.body 27 }) 28 } 29 render () { 30 if (!this.state.items) { 31 return <div className='App'> 32 現在読み込み中</div> 33 } 34 var i = 0 35 const list = this.state.items.map(e => { 36 i++ 37 if (i > 5) { 38 return <p className='right'>{e.name}</p> 39 } else { 40 return <p className='left'>{e.name}</p> 41 } 42 }) 43 return ( 44 <div className='App'> 45 {list} 46 </div> 47 ) 48 } 49} 50 51export default App

css

1.left{ 2 margin: 0; 3 text-align: left; 4 list-style: none; 5 width:48%; 6} 7 8.right{ 9 background-color: #ffd; 10 margin: 0; 11 text-align: right; 12 list-style: none; 13 width:48%; 14}

Json

1[ 2 {"name": "Apple"}, 3 {"name": "Orange"}, 4 {"name": "Banana"}, 5 {"name": "Mango"}, 6 {"name": "桜"}, 7 {"name": "Apple"}, 8 {"name": "Orange"}, 9 {"name": "Banana"}, 10 {"name": "Mango"}, 11 {"name": "桜"} 12] 13

出力としてはこのようにしたいです、
Apple Apple
Orange Orange
Banana Banana
Mango Mango
桜 桜

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

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

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

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

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

keisukeh

2018/08/13 04:34

どの部分がうまく行ってませんか? カウントアップのiの値がうまく設定できない? クラス名がつかない? そもそもエラーになる? 吐き出されたHTMLが思い通りにならない? もうすこし情報があれば回答しやすいと思います。
退会済みユーザー

退会済みユーザー

2018/08/13 04:36

吐き出されたHTMLが思い通りになりません。
keisukeh

2018/08/13 04:37

吐き出されたHTMLを追記していただくことは出来ますか?他の部分に関しては想定した動きになってますか?
退会済みユーザー

退会済みユーザー

2018/08/13 04:41

吐き出されたHTMLはApple Orange Banana Mango 桜 Apple Orange Banana Mango 桜 のようになっています
退会済みユーザー

退会済みユーザー

2018/08/13 04:42

すみません、全て縦に表示されてしまいます。
退会済みユーザー

退会済みユーザー

2018/08/13 04:44

全て一列に表示されてします
keisukeh

2018/08/13 04:46

class="left",class="right"がついた状態で縦一列に並んでるならReact側は問題ないと思うので後はCSSの問題じゃないでしょうか
退会済みユーザー

退会済みユーザー

2018/08/13 04:50

css 情報を追加しました。どのようにすれば思い通りに出力出来ますか。
退会済みユーザー

退会済みユーザー

2018/08/13 10:46

ありがとうございました。
guest

回答1

0

ベストアンサー

"display: inline-block;"を指定すれば横並びになりますが、それだけだとうまく表示されないと思います。
jsの方にも修正が必要かと。

javascript

1//...省略 2var i = 0 3var leftList = []; 4var rightList = []; 5 6this.state.items.map(e => { 7 i++ 8 if (i > 5) { 9 rightList.add(<p>{e.name}</p>); 10 } else { 11 leftList.add(<p>{e.name}</p>); 12 } 13}) 14 15return ( 16 <div className='App'> 17 <div className='left'>{leftList}</div> 18 <div className='right'>{rightList}</div> 19 </div> 20) 21//...省略

CSS

1.left{ 2 margin: 0; 3 text-align: left; 4 list-style: none; 5 width:48%; 6 display: inline-block; 7} 8 9.right{ 10 background-color: #ffd; 11 margin: 0; 12 text-align: right; 13 list-style: none; 14 width:48%; 15 display: inline-block; 16}

投稿2018/08/13 07:37

nekoniki

総合スコア2409

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

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

og24715

2018/08/13 09:37

Array.prototype.map は コールバックに value, index array を与えるので、外にカウンター変数 i を持たずに index を使えば同等のことが出来ます。更にいうと .map は配列をもとに配列を作るメソッドなので .map の返り値が不要であれば .forEach を使用したほうが適切です。あと js の Array オブジェクトに .add メソッドは無いです。多分意図してるのは .push です
退会済みユーザー

退会済みユーザー

2018/08/13 10:45

ありがとうございます。皆さんの知恵を元にアプリを改良したいと思います。
nekoniki

2018/08/13 14:56

og24715様 ご指摘ありがとうございます。 仰る通りです。拙い回答に丁寧な補足をいただき非常に勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問