无法读取属性...来自undefined,当有条件地使用ref属性呈现组件时

时间:2018-02-12 23:51:22

标签: javascript reactjs

当我尝试使用condtion渲染具有ref prop的组件时,react编译器表示它无法找到参考enter image description here

中附带功能的组件

这是容器组件的代码

def search_list(list_of_tuples):
    for i in list_of_tuples:
        print(i[0])

prices = [('AAPL',96.43),('IONS',39.28),('GS',159.53)]
search_list(prices)

正如你可以看到DetalleDeposito标签有一个ref属性但我想显示组件只要showDetailDeposito状态设置为True,那就是当我使用没有条件的组件时它工作,但是很快因为我把它放在它失败的状态。

希望您能告诉我如何在需要显示条件时依赖于条件来渲染具有ref属性的组件。感谢。

1 个答案:

答案 0 :(得分:1)

我认为问题是因为您使用相同的点击处理程序onClickRowshowDetailDeposito设置为true,然后使用ref来调用函数。但是,因为setState是异步的,所以对ref的调用失败,因为由于<DetalleDeposito />为假而尚未装入该组件showDetailDeposito

要解决此问题,您可以尝试使用setState中的回调来在设置状态后调用ref函数。

this.setState({ 
    showDetailDeposito: true
},
() => this.refs.detalle.getDataFromTable(row)
});