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

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

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

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

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

React.js

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

Q&A

解決済

1回答

1332閲覧

外部APIから所得してきた情報をmapメソッドで展開したい。

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

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

React.js

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

0グッド

0クリップ

投稿2020/03/24 09:14

前提・実現したいこと

フロントをreact、サーバーをrailsで開発を行っています。
その際axiosを使ってrailsから所得した情報をmapで展開したいのですがうまくいきません。

前提条件 外部APIとしてはNews API(https://newsapi.org/)とrails apiモードの二箇所から情報を所得しています。問題になっているのはrailsからの情報所得の方でうまく行っていません。(memosの方です)。

発生している問題・エラーメッセージ

Main.js import React, { useContext } from "react"; import Kizi from "./Kizi"; import AppContext from "../../context/AppContext"; import Side from './Side.js' const Main = () => { const { article,memos } = useContext(AppContext); const item = article.map((art, index) => { return ( <Kizi title={art.title} image={art.urlToImage} body={art.description} key={index} /> ); }); const rail = memos.data.map((memo,index) =>{ return ( <Side title={memo.title} image={memo.image} body={memo.body} memo={memo.memo} key={index} /> ) }) return ( <div className="main"> {/* サイドーーーー railsからお気に入り記事データの所得をする*/} <div className="said"> {rail} </div> {/* ------------メインコンテンツーーーー */} <div className="content">{item}</div> {/* ================右の箱=============== */} <div className="right"> <div className="right__box"> <img className="right-image" src="https://picsum.photos/id/237/200/300" ></img> <div className="right-content"> 自分も含め多数の人がメモしたランキングが流れる </div> </div> </div> </div> ); }; export default Main;

コード

APP.js import React ,{useState,useEffect}from 'react'; import AppContext from '../context/AppContext' import '../scss/App.scss'; import Head from './top/Header' import Main from './top/Main' import axios from 'axios' function App() { const [article, setArticle] = useState([]); const [memos, setMemos] = useState([]); useEffect(()=>{ news(); rails(); },[]) const news = async() =>{ const url = 'http://newsapi.org/v2/top-headlines?country=jp&category=business&apiKey=e50c1e192d364a2a8f35150d178f8df8' try { const response = await axios.get(url); setArticle(response.data.articles) } catch (error) { console.error(error); } } console.log(memos[0]); const rails = async()=>{ const memourl = 'http://localhost:3001/memos' try { const respons = await axios.get(memourl); setMemos(respons.data.data); } catch (error) { console.error(error); } } ```ここに言語を入力 コ-ド ```   config/initializers/cors.rb Rails.application.config.middleware.insert_before 0, Rack::Cors do allow do origins 'http://localhost:3000' #特定のオリジンからのリクエストを許可する resource '*', headers: :any, methods: [:get, :post, :put, :patch, :delete, :options, :head] end end

###エラーメッセージ
TypeError: Cannot read property 'map' of undefined

###試したこと

var toString = Object.prototype.toString を使って型を調べましたがうまく行っているarticleも失敗しているmemosの方もどちらの object arrayでした。

### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。 rails 5.2.4.2 apiモード react "version": "0.1.0", "dependencies": { "axios": "^0.19.2", "cra-template": "1.0.3", "node-sass": "^4.13.1", "react": "^16.9.0", "react-dom": "^16.9.0", "react-router-dom": "^5.1.2", "react-scripts": "3.4.1"

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

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

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

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

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

guest

回答1

0

ベストアンサー

memos.data.mapのところをmemos .mapに変更したらできました。お騒がせしました。

投稿2020/03/25 03:22

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問