我想在SingleCard
中调用renderHiddenItem
子组件方法。我为每个renderItem
分配了不同的参考名称。但是,当我致电 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
答案 0 :(得分:1)
您需要使用动态变量而不是名称,这可以通过使用括号表示法来完成
<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>
);
}
}}
/>
当您对使用来自ref
的HOC实例connect
创建的组件使用react-redux
时,大多数库都提供了一个名为getWrappedInstance
的方法来获取实际组件的ref而不是connect
组件。您可以像
this[name].getWrappedInstance()
但最初您需要将{withRef: true}
设置为connect
中使用SingleCard
的第四个参数
connect(mapStateToProps, mapDispatchToProps, null, { withRef: true })(SingleCard);
您可以在此处详细了解