es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Intento inválido de propagar una instancia no iterable al obtener cada valor del picker.

Tengo un selector que se mapea en base a los elementos de la base de datos y estoy tratando de obtener el valor de cada selector para enviarlo de vuelta a la base de datos. Hasta ahora he hecho esto:

this.state = {
            rating: null,
            arrRating:[]
        }

renderQuestion(){
        let panels = []
          this.props.companyQuestion.map((key, index) =>{
            panels.push(
                <view key="{index}" style="{styles.panel}">
                    <view style="{styles.panelRow}">
                        <text style="{styles.panelText}">{key.question}</text>
                        <picker selectedvalue="{this.state.rating}" style="{styles.panelText}" onvaluechange="{(itemValue," itemindex)="">
                            this.setState({ rating: itemValue, 
                                arrRating:[...this.state.arrRating.push(this.state.rating)] })
                        }>
                        <picker.item label="Score" value="0"></picker.item>
                        <picker.item label="1" value="1"></picker.item>
                        <picker.item label="2" value="2"></picker.item>
                        <picker.item label="3" value="3"></picker.item>
                        <picker.item label="4" value="4"></picker.item>
                        <picker.item label="5" value="5"></picker.item>
                        </picker> 
                    </view>
                </view>
            );
          })
        return panels;
    }

Pero estoy teniendo un error cuando selecciono un elemento en el selector. Dice:

TypeError: Intento inválido de propagar una instancia que no es iterable.
Para ser iterable, los objetos no array deben tener un método [Symbol.iterator]().
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error “TypeError: Intento no válido de propagar una instancia no iterable. Para ser iterable, los objetos no-array deben tener un método Symbol.iterator“. Esto indica que la propiedad de estado “arrRating” no es un objeto iterable y no se puede propagar.

    Para solucionar este error, la propiedad “arrRating” debería ser un array que se pueda iterar. En lugar de usar el método push, que devuelve la nueva longitud del array y no el nuevo array en sí, se debe utilizar el operador de propagación para crear un nuevo array con el valor de rating actualizado.

    La función onValueChange en el componente Picker debe actualizarse de la siguiente manera:

    onValueChange={(itemValue, itemIndex) => this.setState({
    rating: itemValue,
    arrRating: […this.state.arrRating, itemValue]
    })}

    Esto creará un nuevo array con los valores de rating existentes y el valor de rating recién seleccionado.

    Además, si se desea que “arrRating” almacene todas las clasificaciones para cada pregunta, la propiedad de estado debería actualizarse a un array de objetos, donde cada objeto contenga el ID de la pregunta y el valor de la clasificación. Esto asegurará que las clasificaciones se almacenen en el orden correcto y se puedan acceder fácilmente cuando se envíen los datos de vuelta a la base de datos.

Comments are closed.