Реагируйте собственным способом Динамической привязки средства выбора к списку средства выбора.Ошибка Элемента

#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. Спасибо, сэр. Я заменил его, как вы говорите, и он работает.