reactjs - 道具最初正确,然后第二次渲染导致它们消失
问题描述
我目前正在学习 Codecademy 全栈课程,并构建了一个 React 项目。
到目前为止,它有几个组件,但这三个让我很烦恼。
应用程序.js
class App extends React.Component {
constructor(props) {
super(props)
this.state = {
searchResults: [{ name: 'Hello', artist: 'Hey there', album: 'Woah!', id: 12345 }]
}
}
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;
搜索结果
class SearchResults extends React.Component {
constructor(props) {
super(props)
}
render() {
return (
<div className="SearchResults">
<h2>Results</h2>
<TrackList tracks={this.props.searchResults} />
</div>
)
}
}
曲目列表
class TrackList extends React.Component {
constructor(props) {
super(props)
console.log(props);
}
render() {
return (
<div className="TrackList">
{ this.props.tracks.map(track => {
<Track
name={track.name}
artist={track.artist}
album={track.album} />
}) }
</div>
)
}
}
最初,app.js 具有称为“searchResults”的状态,它是一个硬编码数组,其中包含一个具有一些属性的对象。这通过一个名为 searchResults 的道具传递给 SearchResults 组件,然后通过另一个名为“tracks”的道具传递给 TrackList。
然后我想通过传递下来的道具进行映射并在屏幕上呈现结果。
但是,每当我尝试加载我的应用程序时,在评估“this.props.tracks.map”时都会收到“未定义错误”。添加控制台日志后,我相信这是因为我的应用程序呈现两次 - 即我的控制台中有两个控制台日志。
第一个日志包含传递下来的 searchResults 状态。第二个返回“未定义”。
我不知道为什么会这样,但有谁知道如何解决这个问题以及为什么我的道具最初出现然后被重新加载并变得未定义?
如果有任何遗漏或您需要澄清,请告诉我!
解决方案
推荐阅读
- amazon-web-services - 如何检查某个表是否正在被 AWS Redshift 上的某个程序或视图使用
- reactjs - ReactJS TypeError:无法读取未定义的属性(读取'main')
- python - iloc[[0]] 不打印标题
- reactjs - remove 0 from redux-form-input-masks
- javascript - Node js HTTPS get request for Instagram post information (?__a=1) request returning 301 status code in Vercel
- javascript - 如何在 div 中创建 div?
- facebook - How can I capture a URL from Chrome Custom Tabs without clicks?
- react-native - VirtualizedList:您有一个更新缓慢的大列表 - React Native FlatList
- java - 是否可以递归检查java数组中所有组合的最大值
- swift - 如何以表单数据格式将数据传递给服务器?我正在尝试发送以下 JSON 数据。我正在使用 Alamofire