Geo*_*tty 6 javascript jquery meteor reactjs material-ui
Material-UI,Meteor,React
所以我想在卡片中嵌入带有onTouchTap(或onClick)功能的下拉列表.
它看起来工作正常,一切都没有麻烦 - 但是当您展开父卡时,同时在onTouchTap列表中的所有内容都会激活.
我已经厌倦了将其他卡片元素嵌入到彼此内部以达到相同的效果.
这仅仅是对代码的限制,还是有一些解决方法?
<Card>
<CardHeader
title={this.props.foodItem.foodName}
subtitle={this.genPrtnImg()}
avatar={this.props.foodItem.imgURL}
actAsExpander={true}
showExpandableButton={true}
/>
<CardText expandable={true}>
<List subheader="Item Requests">
<ListItem
primaryText={userName}
secondaryText={"Has requested " + prtNo + " portions"}
leftAvatar={<Avatar src="http://thesocialmediamonthly.com/wp-content/uploads/2015/08/photo.png" />}
primaryTogglesNestedList={true}
nestedItems={[
<ListItem
key={1}
primaryText="Accept"
leftIcon={<SvgIcons.ActionCheckCircle color='Green'/>}
onTouchTap={this.handleAccept(userName, prtNo)}
/>,
<ListItem
key={2}
primaryText="Reject"
leftIcon={<SvgIcons.ContentBlock color='Red'/>}
onTouchTap={this.handleReject(userName)}
/>,
]}
/>
</List>
</CardText>
</Card>
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激,谢谢!
小智 7
如果你使用ES6,有一个更简单的方法
您可以将onClick方法更改为:
onClick={() => { this.handleAccept(userName, prtNo) }}
Run Code Online (Sandbox Code Playgroud)
onClick={this.handleAccept(userName, prtNo)}
不管用。它会this.handleAccept
在实例化时调用,而不是在事件触发时调用。您必须使用部分或闭包来获取这些变量。
以下是使用闭包的方法:
getAcceptHandler: function(userName, prtNo) {
handleAccept = function(event) {
do_something_with_event_or_ignore_it = event.target...
do_something_with_userName_and_or_prtNo = userName + prtNo
this.save(do_something_with_userName_and_or_prtNo)
...
}
return handleAccept
}
Run Code Online (Sandbox Code Playgroud)
然后像这样更改 JSX:
<ListItem
key={1}
primaryText="Accept"
leftIcon={<SvgIcons.ActionCheckCircle color='Green'/>}
onTouchTap={this.getAcceptHandler(userName, prtNo)}
/>,
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3199 次 |
最近记录: |