【发布时间】:2017-10-19 23:22:04
【问题描述】:
我在这里遍历列表并显示可点击的{expense.createdAt}。当我点击{expense.createdAt} 时,我想在同一页面上显示它的<ExpenseDetails />,所以我需要传递道具。如何使用 onClick 做到这一点?
我下面的代码不显示任何内容。
class ExpenseList extends Component {
render () {
const {expenses} = this.props;
const list = expenses.expenseList.map(expense =>
<Segment clearing key={expense.uid} >
<a href="" onClick={() => {this.passProps(expense)}}>
{expense.createdAt}
</a>
</Segment>
)
const details = function passProps(expense){
return (
<div>
<ExpenseDetails expense={expense}/>
</div>
)
}
return (
<div>
<Grid celled='internally'>
<Grid.Row>
<Grid.Column width={5}>
<div>
<h1>Your Expense List:</h1>
<Segment.Group raised>
{list}
</Segment.Group>
</div>
</Grid.Column>
<Grid.Column width={11}>
<Segment>
{details}
</Segment>
</Grid.Column>
</Grid.Row>
</Grid>
</div>
)
}
}
当我点击{expense.createdAt} 时,页面会刷新。这可能是个问题。我怎样才能防止这种情况发生?
console.log(this.props.expenses):
【问题讨论】:
-
什么是
this.passProps?请展示您的整个组件。 -
我编的。它应该是一个将 props 传递给
<ExpenseDetails />并在屏幕上呈现<ExpenseDetails />组件的操作。我将此操作存储在const details中。那有意义吗?我对此很陌生。 -
代码中的每一个元素都是示例吗?你真的有一个
Segment具有你想要的功能的组件吗?您愿意改变当前组件层次结构的方式吗? -
是的,如果我输入
<ExpenseDetails />而不是 {details} 我会从该组件中获取示例文本。所以它似乎工作正常。<Segment>和其他只是语义 UI 样式的组件。
标签: reactjs