渲染REACT基于阵列对象的id组件
问题描述:
我有一些数据称为通道,其是包含数组对象:渲染REACT基于阵列对象的id组件
channels : [
{ name:'tv100',number:'100'},
{ name:'tv200',number:'200'}
]
我在组分反应:
ChannelContainer:
export default class ChannelContainer extends React.Component {
constructor(props) {
super(props)
this.state = {
channels: '',
selectedChannel: ''
}
}
componentDidMount() {
let channel_data = [{ name: 'tv100', number: '100' }, { name: 'tv200', number: '200' }];
this.setState = { channels: channel_data }
}
render(){
return (
<div className="tv">
<TvGuide channel={this.state.channels} />
<TvView channel_nr={this.state.selectedChannel} />
</div>
);
}
}
TvGuide组件:
const TvGuide = (props) => {
return (
<div className="tvguide_container">
<ul>
{props.channel.map((number, index) => {
return(
<li key={index}>
<a> {number}</a>
</li>
)
})
}
</ul>
</div>
);
}
TvView组件:
const TvView = (props) => {
return (
<div>
<h1>{props.channel.name}</h1>
</div>
)
}
export default TvView
当电视周刊上的一个链接,用户点击成分,我想道具数据发送到TvView组件,因此它可以呈现频道的名称。在反应中最好的方法是什么?
答
从ChannelContainer
我想传递一个onClick
处理程序电视周刊,其将与通道被称为点击,这将调用setState
容器,从而重新描绘你TvView
。
class ChannelContainer extends React.Component {
// ...
onGuideClick = (channel) => {
this.setState({
selectedChannel: channel
})
}
render(){
return (
<div className="tv">
<TvGuide onClick={this.onGuideClick} channel={this.state.channels} />
<TvView channel_nr={this.state.selectedChannel} />
</div>
);
}
}
const TvGuide = (props) => {
return (
<div className="tvguide_container">
<ul>
{props.channel.map((channel) => {
const onClick =() => {
props.onCLick(channel);
}
return(
<li onClick={onClick} key={channel.number}>
<a>{channel.name}</a>
</li>
)
})
}
</ul>
</div>
);
}
你能提供一个代码示例吗?只是想让我的头靠近它。 – SHUMAcupcake
当然,我添加了一些未经测试的代码,它跟在描述 – enjoylife
更好的抽象是有一个onChannelSelected事件,这种方式可以触发事件,如果您提供键盘导航,或者如果它编程方式更改。另外,为什么你要为每个通道创建一个单独的处理程序?你不能只是'onClick =“this.onClick(channel)'' –