首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Coffeescript

Coffeescript
EN

Stack Overflow用户
提问于 2015-03-12 14:17:29
回答 1查看 233关注 0票数 0

刚开始学习咖啡记录,我和React.js一起工作。我正在尝试确定单击了哪一个,并且建议我不要在每个标头上使用数据属性。我有一些在handleHeaderClick函数下如何处理这些问题的想法,但我不太确定它们应该如何实现。我还在考虑将ContactsTable组件分成一个ContactsTableHeader组件和一个ContactsTableRow组件,但在ContactsTableHeader中仍然存在同样的问题--确定单击了哪个标头。

代码语言:javascript
复制
#Application.cjsx

handleHeaderClick: ->
   # childComponent.props
   # childComponent.refs
   # React.findDOMNode(childComponent.refs.firstName)
   # React.findDOMNode(childComponent.refs.lastName)
   # React.findDOMNode(childComponent.refs.age)

render: ->
  <div>
    <ContactsTable contactList={@state.contacts} onClick={@handleHeaderClick} />
  </div>



#ContactsTable.cjsx

render: ->
  if @props.contactList
    contactsList = @props.contactList.map (contact) ->
                <tr><td>{"#{contact.firstName}"}</td><td>{"#{contact.lastName}"}</td><td>{contact.age}</td></tr>


  <table style={tableStyle}>
    <thead style={headerStyle} onClick=@props.onClick>
        <tr>
            <th>FirstName</th>
            <th>Last Name</th>
            <th>Age</th>
        </tr>
    </thead>
    <tbody>
        {contactsList}
    </tbody>
  </table>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-12 15:53:59

你可以做这样的事。

代码语言:javascript
复制
#Application.cjsx

handleHeaderClick: (header) ->
  @setState({clickedHeader: header})
  #do something else

render: ->
  <div>
    <ContactsTable contactList={@state.contacts} onClick={@handleHeaderClick} />
  </div>



#ContactsTable.cjsx

render: ->
  if @props.contactList
    contactsList = @props.contactList.map (contact) ->
                <tr><td>{"#{contact.firstName}"}</td><td>{"#{contact.lastName}"}</td><td>{contact.age}</td></tr>


  <table style={tableStyle}>
    <thead style={headerStyle}>
        <tr>
            <th onClick={@props.onClick('FirstName')}>FirstName</th>
            <th onClick={@props.onClick('LastName')}>Last Name</th>
            <th onClick={@props.onClick('Age')}>Age</th>
        </tr>
    </thead>
    <tbody>
        {contactsList}
    </tbody>
  </table>

在这里,clickedHeader保存在Application.cjsx中存在的组件中。您还可以在ContactsTableHeader中保存它,它应该类似于类似的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29012227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档