ReactJs - API Feed 错误 - 无法读取未定义的地图 属性
ReactJs - API Feed Error - cannot read property of map undefined
我希望你能帮助我。我正在尝试使用 axios/ReactJs 将一个简单的 TFL 管 API 插入我的网页。
集成非常简单。我正在使用 app.js,然后是一个功能组件,我将在其中 loop/map 处理数据并通过 <li>
s 将我需要的信息提取到我的网页中。
但是,我的 <Frame />
组件中不断出现以下错误:
app.js:29827 Uncaught TypeError: Cannot read property 'map' of
undefined at Frame (app.js:29827)
它不喜欢我在 'feed' 上的映射方式。我不确定我错过了什么,因为通常这段代码适用于简单的 API 集成。
这是app.js
import React from 'react';
import ReactDOM from 'react-dom';
import axios from 'axios';
import Frame from './components/Frame';
import 'bulma';
class App extends React.Component {
constructor() {
super();
console.log('CONSTRUCTOR');
this.state = {
feed: []
};
}
//pull through the TFL data
componentDidMount() {
console.log('tfl feed');
axios.get('https://api.tfl.gov.uk/Line/Mode/tube/Status?detail=true&app_id=IVEREMOVEDAPIID&app_key=IVEREMOVEDAPIKEY')
//response
.then(res => {
console.log(res);
console.log(res.data);
console.log(res.data[0].name);
this.setState(
{ feed: res.data });
});
}
render() {
return(
<section>
<div>
<h1>Tube Status</h1>
<Frame />
</div>
</section>
);
}
}
ReactDOM.render(
<App />,
document.getElementById('root')
);
这是 <Frame />
模块,我正在其中进行映射:
import React from 'react';
const Frame = ({feed}) => {
return (
<section>
<div className="columns is-multiline">
<ul>
{feed.map((tube, i) => <li className="column is-one-quarter" key={i}>
{tube.name}
</li>)}
</ul>
</div>
</section>
);
};
export default Frame;
如有指点,那就太好了!
feed
undefined
因为你没有将道具传递给组件。查看您的渲染方法。
只需将 feed peace of state 作为道具传递给 Frame
。
render() {
return(
<section>
<div>
<h1>Tube Status</h1>
<Frame feed={this.state.feed}/>
</div>
</section>
);
}
}
我希望你能帮助我。我正在尝试使用 axios/ReactJs 将一个简单的 TFL 管 API 插入我的网页。
集成非常简单。我正在使用 app.js,然后是一个功能组件,我将在其中 loop/map 处理数据并通过 <li>
s 将我需要的信息提取到我的网页中。
但是,我的 <Frame />
组件中不断出现以下错误:
app.js:29827 Uncaught TypeError: Cannot read property 'map' of
undefined at Frame (app.js:29827)
它不喜欢我在 'feed' 上的映射方式。我不确定我错过了什么,因为通常这段代码适用于简单的 API 集成。
这是app.js
import React from 'react';
import ReactDOM from 'react-dom';
import axios from 'axios';
import Frame from './components/Frame';
import 'bulma';
class App extends React.Component {
constructor() {
super();
console.log('CONSTRUCTOR');
this.state = {
feed: []
};
}
//pull through the TFL data
componentDidMount() {
console.log('tfl feed');
axios.get('https://api.tfl.gov.uk/Line/Mode/tube/Status?detail=true&app_id=IVEREMOVEDAPIID&app_key=IVEREMOVEDAPIKEY')
//response
.then(res => {
console.log(res);
console.log(res.data);
console.log(res.data[0].name);
this.setState(
{ feed: res.data });
});
}
render() {
return(
<section>
<div>
<h1>Tube Status</h1>
<Frame />
</div>
</section>
);
}
}
ReactDOM.render(
<App />,
document.getElementById('root')
);
这是 <Frame />
模块,我正在其中进行映射:
import React from 'react';
const Frame = ({feed}) => {
return (
<section>
<div className="columns is-multiline">
<ul>
{feed.map((tube, i) => <li className="column is-one-quarter" key={i}>
{tube.name}
</li>)}
</ul>
</div>
</section>
);
};
export default Frame;
如有指点,那就太好了!
feed
undefined
因为你没有将道具传递给组件。查看您的渲染方法。
只需将 feed peace of state 作为道具传递给 Frame
。
render() {
return(
<section>
<div>
<h1>Tube Status</h1>
<Frame feed={this.state.feed}/>
</div>
</section>
);
}
}