#javascript #react-native
Вопрос:
Я действительно новичок в реагировании на родной язык. Когда я пытаюсь динамически привязать сборщик. Для элемента с данными из API ошибка
[Необработанное отклонение обещания: ошибка типа: не определено не является функцией (рядом с ‘…marka_arr.map…’)]
показано. Я считаю, что причина в том, что перед получением данных он пытается отобразить средство выбора. Можете ли вы помочь мне исправить ошибку?
Код:
import React, {useState, useEffect} from 'react';
import axios from 'axios';
import {
StyleSheet,
Text,
View
} from 'react-native';
import {Picker} from '@react-native-picker/picker';
const VeriGuncelleme = ({route}) => {
const { responseData } = route.params;
const {kullaniciBilgisi} = route.params;
var bolge = responseData.items[0].bolge;
var etiket_no = responseData.items[0].etiket_no;
var marka = responseData.items[0].uretici;
var model = responseData.items[0].model;
var serino = responseData.items[0].serino;
var ad_soyad = responseData.items[0].ad_soyad;
var varlik_turu = responseData.items[0].varlik_turu;
const [selectedValue, setSelectedValue] = useState("");
const url_marka = --here api url-- varlik_turu;
var marka_arr_new=[];
const [marka_arr, setMarkaArr] = useState([model]);
axios.get(url_marka)
.then(res => {
for(var i =0; i<res.data.items.length; i ){
marka_arr_new.push(res.data.items[i].d);
}
setMarkaArr({marka_arr:marka_arr_new});
})
return (
<View style={styles.container}>
<View>
<Text style={{fontWeight:'bold', padding:8}}>Etiket No : {etiket_no}</Text>
<Text style={{fontWeight:'bold', padding:8}}>Marka :</Text>
<Text style={{fontWeight:'bold', padding:8}}>Model :</Text>
<Text style={{fontWeight:'bold', padding:8}}>Seri No :</Text>
<Text style={{fontWeight:'bold', padding:8}}>Bölge :</Text>
</View>
<View>
<Picker
selectedValue={selectedValue}
style={{ height: 50, width: 150 }}
onValueChange={(itemValue, itemIndex) => setSelectedValue(itemValue)}>
{ marka_arr.map((value,index) => {
return <Picker.item label={value} value={value} key ={index}/>}) }
</Picker>
</View>
</View>
);
}
export default VeriGuncelleme;
const styles = StyleSheet.create({
container_style_two: {
//marginTop:"5%",
padding:40,
},
textOnay: {
fontWeight:'bold',
padding:8,
color:'green'
},
textOnaylanmadi: {
fontWeight:'bold',
padding:8,
color:'red'
},
container: {
flex: 1,
paddingTop: 40,
flexDirection:"row"
//alignItems: "center"
}
});
Ответ №1:
Вы должны заменить setMarkaArr({marka_arr:marka_arr_new})
на setMarkaArr(marka_arr_new)
.
{ marka_arr:marka_arr_new }
является объектом, а не массивом. Таким .map
образом, функция недоступна в объекте.
Комментарии:
1. Спасибо, сэр. Я заменил его, как вы говорите, и он работает.