我试图在呈现flatlist的同时将ref录取到一个元素上,但裁判却返回了不确定的。请参阅下面的相关代码:
构造函数:
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:
<FlatList
data={data}
renderItem={item => this._renderItem(item, this)}
keyExtractor={(item, index) => index.toString()}
/>
modalRef.current
是 null
,因为该引用分配在Modal
组件的安装座上。我认为该组件在调用_renderItems
函数时未安装。
我建议您使用不呈现组件的函数内部的参考,例如事件处理程序。那里的ref
变量应具有对组件的引用。