#react-native #function
#react-native #функция
Вопрос:
Мне нужно вызвать функцию и передать ей идентификатор параметра:
<TouchableOpacity
onPress={() => this.addInstaPost(myInstaPost[i].postId)}
>
<Text style={styles.reply}>
<Icon family="Entypo" size={19} name="reply-all" /> Reply
</Text>
</TouchableOpacity>
эта возвращаемая ошибка «Undefined не является объектом (вычисление ‘myInstaPost[i].postID’
если я удалю параметр и просто выведу его после текстового «воспроизведения» для отладки….
<TouchableOpacity
onPress={() => this.addInstaPost()}
>
<Text style={styles.reply}>
<Icon family="Entypo" size={19} name="reply-all" /> Reply {myInstaPost[i].postId}
</Text>
</TouchableOpacity>;
Он отображается в полном порядке….
Есть идеи, что я делаю не так?
Это как-то связано с циклом и onPress() …
Если я объявлю переменную IE: var currId = myInstaPost[i].postID;
когда я делаю это:
onPress={() => this.addInstaPost(currId)}
а затем внутри addInstaPost я предупреждаю параметр, который я всегда получаю из первого элемента в цикле….
но когда я показываю его где-то внутри текста … для отладки я получаю правильный.
Ответ №1:
попробуйте использовать .map
метод для этого случая
{myInstaPost.map((item, index) => (
<TouchableOpacity onPress={() => this.addInstaPost(item?.postId)} key={index}>
<Text style={styles.reply}>
<Icon family="Entypo" size={19} name="reply-all" /> Reply
</Text>
</TouchableOpacity>
))}
Комментарии:
1. Спасибо, myInstaPost — это массив объектов, поэтому, если использовать ‘myInstaPost[i].map’, я получаю сообщение об ошибке ‘undefined не является функцией (рядом с myInstaPost [i].map)’, если я объявляю переменную внутри цикла, т.Е.: var currMyInstaPost = myInstaPost [i]; Яя получаю ту же ошибку… Если я удалю счетчик myInstaPost.map, ошибки не будет, но он отображает все ссылки, а не только текущие.
2. Объявление фиктивного массива сделало свое дело… var currMyInstaPost = []; currMyInstaPost.push(myInstaPost[i]); и затем я сделал, как было предложено… {currMyInstaPost.map((item, index) => (…. и это сработало хорошо…