【发布时间】:2018-09-10 17:27:18
【问题描述】:
我想在renderHiddenItem 中调用SingleCard 子组件方法。我为每个 renderItem 分配了不同的 ref 名称。但是当我调用 this.name 时,它是undefined。这段代码有什么问题吗?我怎样才能做到这一点?
<SwipeListView
data={this.state.listViewData}
renderItem={(data, i) => {
const name = 'childRef'+i
return (
<SingleCard
ref={component => this.name = component}
itm={data.item}
/>
);
}}
renderHiddenItem={(data, i) => {
const name = 'childRef'+i
return (
<TouchableOpacity onPress={ () => console.log(this.name)}>
<Text> h </Text>
</TouchableOpacity>
);
}
}}
/>
更新:
我想触发一些写在 singleCard 组件中的动作。需要打电话给renderHiddenItem。
像这样:
this.childRef0.someMethod
this.childRef1.someMethod
【问题讨论】:
-
在我看来,renderHiddenItem 在 SingleCard 组件挂载时或之前被调用,这意味着 ref 将始终未定义。你能详细说明你想做什么吗?也许还有其他解决方案。
-
@NemiShah 更新了!在 renderItem 之后调用 renderHiddenItem。
-
是的,但是 SingleCard 组件会在 renderHiddenItem 之前挂载吗?尝试登录单卡的componentDidMount
-
没有。 renderHiddenItem 在单卡中的 componentDidMount 之前被调用。
-
@NemiShah Doc 说 - 引用首先设置在第一个
render之后,但在componentDidMount之前
标签: reactjs react-native react-redux parent-child ref