我正在尝试在呈现平面列表的同时获取对元素的引用,但是该引用返回为未定义。 请参阅下面的相关代码:
构造函数:
constructor(props) {
super(props);
this.modalRef = createRef();
}
RenderItem:
_renderItem = ({ item }, context) => {
const modalRef = context.modalRef.current; // Why is context.modalRef.current null?
let onPress = () => alert("Something went wrong...");
return (
<View style={styles.item}>
<ListItemCard
id={item.id}
value="Some value.."
onPress={onPress()}
/>
</View>
);
};
具有“渲染”功能:
屏幕上的模式:
<Modal
ref={this.modalRef}
text="Some text.."
onPressClose={() =>
this.modalRef.current.close()
}
/>
平面列表:
<FlatList
data={data}
renderItem={item => this._renderItem(item, this)}
keyExtractor={(item, index) => index.toString()}
/>
答案 0 :(得分:1)
modalRef.current
是null
,因为引用是在Modal
组件的安装位置上分配的。我假设在调用_renderItems
函数时未安装该组件。
我建议您在不呈现组件的函数(例如事件处理程序)中使用ref。此处ref
变量应具有对该组件的引用。