有没有办法将反应组件外部重置为其原始状态

时间:2017-07-22 02:50:43

标签: reactjs

我目前正在使用我通过npm安装的一些复杂的有状态React组件。例如,react-bootstrap-table组件。它通过其道具接受数据。但它保留了许多自己的状态,例如,当前选择了哪一行。我正在添加一个按钮,点击后我想清除所有选中的行信息。无法访问任何可以执行此操作的API,我想知道是否可以完全重置表组件。

现在我使用一个基于标志呈现表的包装器组件。它看起来像:

class wrapper extends React.component{

  render(){
    if(this.props.flag==true) return <React-Table />;
    else return null;
      }
}

现在通过切换标志,我可以强制重新呈现具有原始状态的表组件。

我想知道是否有更简单的方法来做到这一点?

2 个答案:

答案 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.