【发布时间】:2021-05-02 00:27:27
【问题描述】:
我目前正在尝试从 JSON 文件中获取数据并将其呈现到研究页面。我所做的一切似乎都不起作用。我想获取数据并将其放入某种表格或可视化中。请让我知道我可能做错了什么。我目前收到以下错误:
TypeError: 无法读取未定义的属性“地图”
在我的数据目录中
damon-data.json(这是一个大文件,放在这里是不可能的,所以我放一小部分)
{
"hits": [
{
"_index": "issflightplan",
"_type": "issflightplan",
"_key": "IDP-ISSFLIGHTPLAN-0000000000000447",
"_version": 1,
"_score": null,
"ContentType": {
"__deferred": {
"uri": "https://bi.sp.iss.nasa.gov/Sites/FP/_api/Web/Lists(guid'a9421c5b-186a-4b14-b7b2-4b88ee8fab95')/Items(252)/ContentType"
}
然后在我的同一个目录中
data.js - 我的想法是我会在这里获取数据并使用道具将其传递到研究页面
import React, {Component} from 'react';
import data from '../data/damon-data.json'
import axios from 'axios';
class Data extends Component {
constructor(props) {
super(props);
this.state = ({
dataSet: []
})
}
componentDidMount() {
let url = data;
axios.get(url)
.then(response => {
console.log(response.data.hits)
this.setState({
dataSet: response.data.hits
})
})
.catch(error => {
console.log(error)
})
}
}
researchPage.js - 这是数据应该呈现的地方(一旦我在这里呈现它,我想我可以开始将它放入一个表格中。除非有更好的方法来解决它。
import React, { Component } from "react";
class researchPage extends Component {
constructor(props) {
super(props);
}
render() {
return(
<div>
{this.props.data.map((dataSet, index) => (
return <p>{dataSet.hits}</p>
))}
</div>
)
}
}
export default researchPage
App.js
import React, {Component} from 'react';
import {BrowserRouter, Route, Switch} from 'react-router-dom';
import './App.css';
import Navbar from "./components/menu/navbar";
import Home from './pages/home/home'
import Explore from './pages/explore/explore'
import search from './pages/search/search'
import researchPage from "./pages/researchPage/reasearchPage";
import Query from './pages/query/query'
import Visualize from "./pages/visualize/visualize";
import Analyze from "./pages/analyze/analyze";
import Configure from "./pages/configure/configure";
class App extends Component{
render() {
return(
<BrowserRouter>
<div>
<Navbar/>
<Switch>
<Route path="/" component={Home} exact/>
<Route path="/explore" component={Explore} exact/>
<Route path="/search" component={search} exact/>
<Route path="/query" component={Query} exact/>
<Route path="/visualize" component={Visualize} exact/>
<Route path="/analyze" component={Analyze} exact/>
<Route path="/configure" component={Configure} exact/>
<Route path="/research" component={researchPage} exact/>
</Switch>
</div>
</BrowserRouter>
)
}
}
export default App;
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root')
);
reportWebVitals();
【问题讨论】:
-
您是否将数据从 Data 组件传递到 researchPage?看不到代码。您能否在 console.log(response.data.hits) 中获取数据?
-
是的,这就是我想要做的,不确定在将 Data 组件传递给 researchPage 时是否遗漏了什么。我在控制台中根本看不到任何数据。我确实放置了以下错误,我得到 TypeError: Cannot read property 'map' of undefined
-
所以您正在从本地 json 文件中导入一些数据。然后你使用 axios 调用一个 URL,根据你的代码,这个 URL 似乎是你刚刚从 json 文件中导入的数据。我超级困惑。
-
您如何/在哪里使用研究页面以及如何将数据传递给它?
-
Sanish,我刚刚添加了 App.js 和 index.js。这是我的主要问题,试图弄清楚如何将数据从数据组件传递到研究页面。我知道我做的不对,但我似乎无法弄清楚我做错了什么。
标签: javascript reactjs react-redux