Reactjs 语义ui反应列表onClick声明
我正在尝试使用语义ui react动态创建文档列表。我希望在单击列表项时返回文档标题。根据文件: 由于这个原因,有一个Reactjs 语义ui反应列表onClick声明,reactjs,semantic-ui-react,Reactjs,Semantic Ui React,我正在尝试使用语义ui react动态创建文档列表。我希望在单击列表项时返回文档标题。根据文件: 由于这个原因,有一个onItemClickprop,但是当我使用它时,当它被渲染时,我会得到一个警告: 警告:失败的道具类型:道具单击列表中的与道具冲突:子项。它们不能一起定义,请选择其中一个 此外,单击列表项也没有任何作用(我只想将文档标题记录到控制台)。代码如下: handleListItemClick(event, data) { console.log("list item click
onItemClick
prop,但是当我使用它时,当它被渲染时,我会得到一个警告:
警告:失败的道具类型:道具单击列表中的
与道具冲突:子项
。它们不能一起定义,请选择其中一个
此外,单击列表项也没有任何作用(我只想将文档标题记录到控制台)。代码如下:
handleListItemClick(event, data) {
console.log("list item clicked: " + data.value);
}
buildResultsContainer() {
return this.props.listOfResults.map((document,index) =>
{
return (
<List.Item
as='a'
key={index}>
<Icon name='file' />
<List.Content>
<List.Header>{document.properties.title}</List.Header>
<List.Description>
{document.properties.description}
</List.Description>
</List.Content>
</List.Item>
);
}
);
}
render() {
return (
<div>
<List onItemClick={this.handleListItemClick}>
{this.buildResultsContainer()}
</List>
</div>
)
}
handleListItemClick(事件、数据){
console.log(“单击的列表项:“+data.value”);
}
BuildResultContainer(){
返回此.props.listOfResults.map((文档,索引)=>
{
返回(
{document.properties.title}
{document.properties.description}
);
}
);
}
render(){
返回(
{this.buildResultsContainer()}
)
}
您能告诉我如何正确使用列表组件的onItemClick道具吗?
不那么重要的是,您有没有关于如何重构列表呈现的技巧?只是想保持渲染函数的简洁,但是这个函数调用看起来有点过分了
非常感谢 我认为使用onimclick
的目的可能是,您将使用列表上的项目
道具
,这样您就不会有任何孩子了
render() {
const items = this.props.listOfResults.map(document => {
return {
icon: 'file',
content: document.properties.title,
description: document.properties.description,
onClick: e => console.log(document.title)
}
});
return <List items={items} />
}
或者,List.Item
使用一个onClick
属性,您可以在buildResultsContainer()
函数中定义该属性。由于每个onClick
函数基于当前文档
对象都是唯一的,因此需要使用匿名函数调用handleClick
函数,如下所示:
<List.Item
onClick={() => this.handleClick(document.title)}
...etc
/>
如果可以从event.target
中获得所需内容,则只需将handleClick
的引用传递到onClick
即可
handleClick = event => {
console.log(e.target.innerText);
};
<List.Item
onClick={this.handleClick}
/>
handleClick=event=>{
console.log(e.target.innerText);
};
谢谢!到目前为止,我尝试了另一种想法:如果我为列表项单击,则在呈现列表时会立即调用该函数。这有点奇怪。console.log(document.title)}/>
?在这种情况下,它工作得很好。奇怪(至少就我目前的reactjs知识而言)为什么onClick={this.handleListItemClick(document.properties.title)}
会给出不同的结果。因为在那里传递的是函数调用,而不是对函数的引用。我将添加一个完全有意义的示例,它还解释了在我的尝试中渲染期间调用它的原因。你的两个建议都完美无瑕,非常感谢!
handleClick = docTitle => {
console.log(docTitle);
};
handleClick = event => {
console.log(e.target.innerText);
};
<List.Item
onClick={this.handleClick}
/>