对于 DetailsLists,“onActiveItemChanged”不能很好地打开该项目的模式对话框,因为第二次单击同一行(关闭模型对话框后)将被忽略,因为 activeItem 没有更改。“onItemInvoke”也不是很好,因为它只响应双击。
有没有办法清除活动项目?
对于 DetailsLists,“onActiveItemChanged”不能很好地打开该项目的模式对话框,因为第二次单击同一行(关闭模型对话框后)将被忽略,因为 activeItem 没有更改。“onItemInvoke”也不是很好,因为它只响应双击。
有没有办法清除活动项目?
这里有两个解决方案:
A:强制重建 DetailsList 我迭代密钥
1)将状态变量添加到包含键值的父组件
state: ComponentState = {
dialogKey: 0
}
2)将密钥添加到DetailsList
<DetailsList
key={this.state.dialogKey}
onActiveItemChanged={trainDialog => this.onOpenModel(item)}
...
/>
3)模型关闭时增加key:
onCloseModal() {
this.setState({
dialogKey: this.state.dialogKey+1
})
}
这将强制重建 DetailsList,因此再次单击相同的 for 将触发 onActiveItemChanged
B:为每一列的渲染器添加一个 onClick 处理程序:
<span onClick={() => component.onOpenModel(action)}>Cell Content</span>