【发布时间】:2020-07-16 12:46:13
【问题描述】:
在我的应用程序中,我在组件 App.js 中有一个初始状态,它是一个对象数组
这里是 App.js 代码:
import React, { Component } from 'react';
import './App.css';
import { render } from '@testing-library/react';
// Import Used Components
import SearchBar from '../SearchBar/SearchBar';
import Playlist from '../PlayList/PlayList';
import SearchResults from '../SearchResults/SearchResults';
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
searchResults: [{name: 'name1',artist: 'artist1',album: 'album1',id: 1},
{name: 'name2',artist: 'artist2',album: 'album2',id: 2}]
};
}
// Adding JSX to App Component
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 的 prop 传递给另一个名为 .
的组件这里是 searchResults.js 代码:
import './SearchResults.css';
import TrackList from '../TrackList/TrackList';
class SearchResults extends React.Component {
render() {
return (
<div className="SearchResults">
<h2>Results</h2>
<TrackList tracks={this.props.searchResults}/>
</div>
);
}
}
export default SearchResults;
然后我将这个道具传递给另一个名为 TrackList 的组件
这里是 TrackList.js 代码:
import React from 'react';
import './TrackList.css';
import Track from '../Track/Track';
class TrackList extends React.Component {
render() {
return(
<div className="TrackList">
{
this.props.tracks.map(track => {
return <Track track={track} key={track.id} />;
} )
}
</div>
);
}
}
export default TrackList;
在 Track.js 中,我想通过这个初始状态数组进行映射以呈现一个名为 Track 的组件
这里是 Track.js 代码:
import React from 'react';
import './Track.css';
class Track extends React.Component {
renderAction() {
if (this.props.isRemoval){
return <botton className='Track-action'>-</botton>;
} else {
return <botton className='Track-action'>+</botton>;
}
};
render() {
return (
<div className="Track">
<div className="Track-information">
<h3>{this.props.track.name}</h3>
<p>{this.props.track.artist} | {this.props.track.album}</p>
</div>
<button className="Track-action">{this.renderAction}</button>
</div>
);
}
}
export default Track;
但是有问题!!我不断收到此错误:
TypeError: 无法读取未定义的属性“地图”
这里是 searchBar.js 组件代码:
import React from 'react';
import './SearchBar.css';
class SearchBar extends React.Component {
render() {
return (
<div className="SearchBar">
<input placeholder="Enter A Song, Album, or Artist" />
<button className="SearchButton">SEARCH</button>
</div>
);
}
}
export default SearchBar;
在此处链接到在沙盒上存在相同错误的项目 https://codesandbox.io/s/upbeat-dawn-lwbxb?fontsize=14&hidenavigation=1&theme=dark
【问题讨论】:
-
错误发生在哪个组件?
-
如果能在codesandbox之类的东西上创建应用就更好了
-
@AhmedEldawody 您需要创建一个可重现的示例,以便我们为您提供帮助。 @moufed 在他的沙箱中为您修复了一个错误,但
map错误不可重现。你也可以分享你的播放列表组件吗? -
@prabhu Here is the project on sandbox
-
我在问题中添加了一个沙箱链接,希望任何人都可以提供帮助.. :(
标签: javascript reactjs