【发布时间】:2017-09-15 12:33:48
【问题描述】:
我对 React 还很陌生。我正在尝试建立一个站点,您可以在其中单击导航项(在本例中为音乐流派),它将列出属于该特定流派的所有歌曲。
我的 app.js 看起来像这样:
import React, { Component } from 'react';
import ListGenres from './ListGenres';
import './App.css';
class App extends Component {
constructor(props) {
super();
this.state = {dataList: props.dataList};
}
render() {
return (
<div>
<div className="App">
<Navigation tracks = {this.state.dataList} />
<ListGenres tracks = {this.state.dataList}/>
</div>
</div>
);
}
}
export default App;
我有一个如下所示的导航组件:
import React from 'react';
import HeaderBar from './HeaderBar';
import MenuItem from 'material-ui/MenuItem';
export class Navigation extends React.Component {
constructor(props) {
super();
}
/*
onClickFunction() {
toggle elements in another component
}
*/
render() {
const genres = this.props.tracks.map((elem) => {
return elem.genre;
});
const filtered = genres.filter((elem, index, self) => {
return self.indexOf(elem) === index;
});
const genreLoop = filtered.map((elem, i) => {
return (
<MenuItem
onClick= {this.onClickFunction}
key={ i }><a>{ elem }</a>
</MenuItem>);
});
return (
<div>
{ genreLoop }
</div>
);
}
}
export default Navigation;
我的项目列表在另一个组件中呈现,如下所示:
import React from 'react';
import './ListGenres.css';
export class ListGenres extends React.Component {
constructor(props) {
super();
}
render() {
return (
<div className="genreList">
<div className="tracklist-visible tracklist-pop">
<ul>
<h3>Pop</h3>
{ this.tracklist('Pop') }
</ul>
</div>
<div className="tracklist-visible tracklist-metal">
<ul>
<h3>Pop</h3>
{ this.tracklist('Metal') }
</ul>
</div>
</div>
);
}
当从导航组件单击锚点时,是否有办法将 css-class 添加到 tracklist-div?看起来我无法从该组件传递任何道具,因为它是“独立”组件?
【问题讨论】:
-
这两个组件有什么关系? onClickFunction 函数在哪里?
-
抱歉,没有。那只是我留下的摆弄。现在添加了评论之间的功能。
-
如果代码不相关 - 删除它。如果它是相关的 - 确保有一个连接..
-
组件之间没有连接,它们只是从上层组件获取相互的props。
-
所以添加上层组件,这样我们就可以理解上下文了。
标签: javascript jquery reactjs toggle