【发布时间】:2017-12-15 22:15:45
【问题描述】:
我不确定为什么会收到 TypeError: Cannot read property 'map' of undefined here:
我正在尝试将数组从 App.js 向下传递到 => SearchResult.js 到 => TrackList.js
TrackList.js:
import React from 'react';
import Track from '../Track/Track'
import '../TrackList/TrackList.css';
class TrackList extends React.Component {
render() {
return (
<div className="TrackList">
{this.props.tracks.map(track => {
console.log(track);
<Track track={track} />}
)}
</div>
);
}
}
export default TrackList;
上面的console.log(track)按预期返回一个对象数组,我认为这可以确保this.props.tracks是一个数组。
App.js:
import React, { Component } from 'react';
import './App.css';
import SearchBar from './Components/SearchBar/SearchBar';
import SearchResults from './Components/SearchResults/SearchResults';
import Playlist from './Components/Playlist/Playlist';
const track = {
name: "Tiny Dancer",
artist: 'Elton John',
album: 'Madman Across The Water'
};
const tracks = [track, track, track];
class App extends Component {
constructor (props) {
super(props);
this.state = {'searchResults': tracks};
}
render() {
return (
<div>
<h1>Ja<span className="highlight">mmm</span>ing</h1>
<div className="App">
<SearchBar />
<div className="App-playlist">
<SearchResults searchResults={this.state.searchResults}/>
<Playlist />
</div>
</div>
</div>
);
}
}
export default App;
SearchResults.js:
import React from 'react';
import '../SearchResults/SearchResults.css';
import TrackList from '../TrackList/TrackList';
class SearchResults extends React.Component {
render() {
return (
<div className="SearchResults">
{/* {console.log(this.props.searchResults)} */}
<h2>Results</h2>
<TrackList tracks={this.props.searchResults}/>
</div>
);
}
}
export default SearchResults;
我也尝试使用 props 从 App.js 传递数组(而不是状态),但我得到了同样的错误。
【问题讨论】:
-
道具是在哪里定义的?你没看到它是未定义的吗?
-
App.js 中的
如果我错了请纠正我。 -
能否在Tracklist的render函数开头添加一个console.log(this.props.tracks)并分享结果?也许 props.tracks 并不总是一个数组...
-
@Tobias 它正在记录 Tracks 数组
标签: javascript reactjs