我目前正在使用我通过npm安装的一些复杂的有状态React组件。例如,react-bootstrap-table组件。它通过其道具接受数据。但它保留了许多自己的状态,例如,当前选择了哪一行。我正在添加一个按钮,点击后我想清除所有选中的行信息。无法访问任何可以执行此操作的API,我想知道是否可以完全重置表组件。
现在我使用一个基于标志呈现表的包装器组件。它看起来像:
class wrapper extends React.component{
render(){
if(this.props.flag==true) return <React-Table />;
else return null;
}
}
现在通过切换标志,我可以强制重新呈现具有原始状态的表组件。
我想知道是否有更简单的方法来做到这一点?
答案 0 :(得分:1)
搜索react-boostrap-table
API后,它找到了方法reset
(请参阅docs):
调用reset以清除当前表中的所有状态。
this.refs.table.reset(); // this.refs.table is a ref for BootstrapTable
答案 1 :(得分:0)
提供更一般的答案,
React没有一种在外部重置组件的通用方法,组件应该在必要时提供它。父组件通过道具或不经常使用ref来直接调用子方法,有两种方式与子组件进行通信。重置是使用第二种方式。
对于react-bootstrap-table,可以调用reset()和cleanSelected()方法。 How to call child component method.