Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

206
Visualizações
¿Por qué reaccionar no ejecuta la función .map?
import React, {Component} from 'react'; import {View, Text} from 'react-native'; import axios from 'axios' //servislere bağlanabilmek için class haline getireceğiz class Liste extends Component { state = {data: [] }; UNSAFE_componentWillMount() { console.log('componentWillMount'); axios.get('https://reqres.in/api/users') .then(response => this.setState({ data: response.data})); } componentDidMount() { console.log('componentDidMount'); } renderData() { return this.state.data.map( responseData => <Text> {responseData.title} </Text> ); } render() { console.log('gelen data', this.state); console.log('render'); return ( <View style={{marginTop: 5}}> {this.renderData()} </View> ); } } export default Liste;

este es mi script de componente Liste.js. tengo un error que me dice "this.state.data.map no es una función" . ¿Qué tengo que hacer? ¿Qué está mal conmigo?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

EDITAR :

Como señaló correctamente @Bergi, en realidad no necesitamos bind la función renderData , ya que el state está correctamente disponible para el método. Me tomé la libertad de crear un violín para verificar los problemas, y de hecho es con la response de la llamada API.

response.data devuelve un object pero response.data.data es una Array . Está corregido en el violín .

 UNSAFE_componentWillMount() { console.log('componentWillMount'); axios.get('https://reqres.in/api/users') .then(response => { this.setState({ data: response.data.data}) }); }

Debe bind renderData al alcance léxico correcto para reaccionar para poder referirse al estado de su componente definido dentro. Además, recomendaría verificar su response.data . Los datos devueltos por la llamada a la API antes de configurar el estado.

Otra opción es usar la función de flecha renderData = () => {...} pero tiene el inconveniente de que cada instancia de su componente obtendrá su propia copia de esta función, aumentando así su huella de memoria.

Puedes hacer lo siguiente:

 import React, {Component} from 'react'; import {View, Text} from 'react-native'; import axios from 'axios' //servislere bağlanabilmek için class haline getireceğiz class Liste extends Component { constructor(props) { super(props); this.state = {data: [] }; this.renderData = this.renderData.bind(this); } UNSAFE_componentWillMount() { console.log('componentWillMount'); axios.get('https://reqres.in/api/users') .then(response => { if(response && Array.isArray(response.data)) { this.setState({ data: response.data}) } else { // handle the type mismatch here } }); } componentDidMount() { console.log('componentDidMount'); } renderData() { return this.state.data.map( responseData => <Text> {responseData.title} </Text> ); } render() { console.log('gelen data', this.state); console.log('render'); return ( <View style={{marginTop: 5}}> {this.renderData()} </View> ); } } export default Liste;
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda