reactjs - 语义 ui-react 列表 onClick 声明

标签 reactjs semantic-ui-react

我正在尝试使用语义 ui-react 动态创建文档列表。我想在单击列表项时取回文档标题。根据文档:
https://react.semantic-ui.com/elements/list

有一个 onItemClick出于这个原因, Prop ,但是当我使用它时,我会在渲染时收到警告:

警告:失败的 Prop 类型: Prop onItemClickList与 Prop 冲突:children .它们不能一起定义,选择其中之一。

同样单击列表项什么也不做(atm 我只想将文档标题记录到控制台)。这是代码:

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>
    )
  }

你能告诉我如何正确使用 List 组件的 onItemClick Prop 吗?

不太重要,你有什么技巧可以重构列表渲染吗?只是想让渲染函数保持简短和干净,但是这个函数调用看起来有点矫枉过正....

非常感谢!

最佳答案

我想可能是使用 onItemClick 时的意图是您将使用 items支持 List从那以后你就没有 children例如

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} />
  }

如果你有你的 listOfResults上面格式的 Prop ,你甚至不需要这样做 map和您的 render功能会非常紧:
render() {
  return <List items={this.props.listOfResults} />;
}

或者,List.Item需要一个 onClick您可以在 buildResultsContainer() 中定义的 Prop 功能。因为每个onClick功能基于当前唯一document对象,您将需要使用匿名函数来调用您的 handleClick功能如下:
<List.Item
  onClick={() => this.handleClick(document.title)}
  ...etc
/>

然后你会:
handleClick = docTitle => {
  console.log(docTitle);
};

如果您想要的东西可以从 event.target 获得, 你可以直接传递 handleClick 的引用到 onClick IE。
handleClick = event => {
    console.log(e.target.innerText);
};

<List.Item
  onClick={this.handleClick}
/>

关于reactjs - 语义 ui-react 列表 onClick 声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49481691/

相关文章:

javascript - react js : Image upload is not working in CKEditor

javascript - 在类中声明之前调用常规函数与箭头函数

semantic-ui-react - 如何在 React Semantic UI 中排列不同大小的卡片

javascript - 我可以在 Semantic UI React 的选项数组中为下拉组件指定 Divider 或 Header 吗?

reactjs - React Native 和 WMS

reactjs - 如何在 Semantic-UI-React(不是 Semantic-UI)中自定义主题?

javascript - 如果路由不存在,React Router 添加条件

javascript - 如何在另一个 react 组件中关闭语义 ui 模式?

reactjs - 将带有标签的输入与没有标签的按钮对齐(垂直)

javascript - 尽管 Semantic-React-UI 表单中存在错误状态,成功消息仍继续触发