Я пытаюсь получить ссылку на элемент при рендеринге плоского списка, но ссылка возвращается как неопределенная. См. соответствующий код ниже:
Конструктор:
constructor(props) {
super(props);
this.modalRef = createRef();
}
Объект Рендеринга:
_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()}
/>



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


modalRef.current — это null, потому что ссылка назначается при монтировании компонента Modal. Я предполагаю, что компонент не смонтирован во время вызова функции _renderItems.
Я рекомендую вам использовать ref внутри функции, которая не отображает компонент, например обработчик событий. Там переменная ref должна иметь ссылку на компонент.
@Imdad Я обновил свой ответ и попытался немного его прояснить.
Понял тебя! Это имеет смысл. Спасибо!
Первый фрагмент имеет смысл, но можете ли вы расширить то, что вы подразумеваете под вторым абзацем?