【发布时间】:2017-08-11 16:31:31
【问题描述】:
我是 react 和 redux 的新手。 我有一个容器,它使用项目列表和 onclick 函数初始化表组件。 在表格组件中,我为每一行设置了复选框。当我单击复选框时,我想选择该行(更改其样式并将选定属性添加到其元素模型)。 当我单击复选框时,我调用 onclick 属性函数,然后通过其 id 在列表中找到该项目,并更改其选定属性。景色并不令人耳目一新。 我了解组件是仅绑定道具和渲染的“愚蠢”组件。
我做错了什么?
// People container
<Table items={this.props.people} columns={this._columns} onRowSelect={this.selectRow} />
this.selectRow(id){
const selectedLead =_.find(this.props.leads.docs, (lead)=>{
return lead._id == id;
})
selectedLead.selected = !selectedLead.selected;
}
// Table Component - inside render()
{this.props.items.map((item, idx) => {
console.log(item.selected);
return <div style={styles.row(item.selected)}>etc...</div>
})}
谢谢:)
【问题讨论】:
-
请提供一些您尝试过的代码:)。
-
我刚刚编辑过 :)
-
React 如何知道你已经更改了
selected属性?如果它不知道它不会重新渲染您的组件。您有两个选择:1)将您的people数组存储在People组件的this.state中,并使用this.setState()方法更改selected属性。 2) 如果您使用的是 redux,请将people数组存储在 redux 存储中并通过 redux 操作更改selected属性。
标签: javascript reactjs redux