Office Fabric:使用户能够重新select DetailsList 中的同一行
Office Fabric: Enabling user to re-select the same row in DetailsList
对于 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,因此再次单击相同的将触发 onActiveItemChanged
B:为每列的渲染器添加一个 onClick 处理程序:
<span onClick={() => component.onOpenModel(action)}>Cell Content</span>
对于 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,因此再次单击相同的将触发 onActiveItemChanged
B:为每列的渲染器添加一个 onClick 处理程序:
<span onClick={() => component.onOpenModel(action)}>Cell Content</span>