重新抚养孩子而不重新抚养父母

时间:2016-08-03 21:57:47

标签: reactjs react-bootstrap-table

我正在创建一个Web应用程序,只需单击一行的复选框,就会激活一个按钮(可单击)。问题是我正在使用react bootstrap表,它没有选项将手动创建的按钮添加到表中。所以,我创建了一个容纳表和按钮的容器组件。我希望它是这样的情况,当我单击一个复选框时,ReactJs将设置其状态以在其中包含该特定行。然后这个状态将作为道具传递给孩子,因此按钮将被激活。但是,如果我这样做,我会遇到复选框的onclick激活的问题,但不检查复选框本身。唯一的方法是阻止容器组件呈现。但是,我需要重新渲染一个孩子的按钮。有没有办法在不重新渲染父组件的情况下重新渲染子组件?我知道forceUpdate()能够做到这一点,但我听说没有建议使用该功能。

编辑:问题本身太混乱,所以我添加了一些代码以使事情变得更加清晰。

我有一个名为DataTable的React类,其初始状态为

{
        tableData : [],
        selectedRows : []
}

tableData由对数据库的调用填充。 SelectedRows由对react-bootstrap-table api的特定调用填充。 DataTableContainer包含一个BootstrapTable和一个SubmitButton。 SubmitButton是我自定义创建的类,它的目的是将所有已检查的行发送到后端以进行进一步处理。

我这样做的方法是将selectedRows传递给SubmitButton作为道具。因此,每次单击复选框时,我都会重置selectedRows的状态,这将被传递给SubmitButton。

onRowSelect : function () {
     this.setState({selectedRows :this.refs.table.state.selectedRowKeys},
     function () {
         console.log('selectedRows are ', this.state.selectedRows);
     });
},

到目前为止一切顺利。但是,当我这样做时,React从不检查该框,虽然我可以看到正在调用onClick。在我创建自己的表之前,我通过保存componentWillReceiveProps中行的复选框状态来解决这个问题。但是,因为我现在不再控制单个行,所以我不再确定如何解决此问题。如果我运行调试器,我会看到该行首先被点击,但一旦所有内容重新出现,复选框将重置。

0 个答案:

没有答案