Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему не рендерится React-компонент в методе render( )?

Союз Здравых Сил Профи (517), на голосовании 6 месяцев назад
В общем последовательность такая: listData - это класс, в котором хранится функция getCharackters(), которая берёт объект данных с APIшки - и возвращет его.

Ну и в общем я сделал функц. getCardsList() - которая записывает в State пер.cardListArray - это уже только нужные данные - массив объектов персонажей(на 2м скрине)

В render() я беру этот массив данных из state, прохожусь по нему map-ом и деструктуризацией беру конкретно нужные позиции из объектов - name, description, image. Ну и ставлю их 'рендерящемуся' элементу. Ну и в итоге у нас должен быть массив нужных элементов - cards

И этот массив я ставлю в return метода render(). Но что-то не работает, ошибку даже не выдаёт, просто как будто этого конечного массива нет. Подскажите, в чём дело?
*я там ещё 2 вопросика по коду в комментах оставил, буду благодарен если поясните


 import React, {Component} from 'react'; 
import './charList.scss';

import Resource from '../../api/data.jsx';


class CharList extends Component{

state = {
dataCards: {}
}


listData = new Resource()
getCardsList = async () => { // Тут нужна конструкция async-await? Влияет ли она на тут на что-то ?
await this.listData.getCharackters().then(
arr => {
const cardListArray = arr.data.results;
this.setState(() => ({dataCards: cardListArray}))
//console.log(cardListArray) - массив объектов перссонажей
}
)
}

componentDidMount(){
this.getCardsList()
}


render(){
const cardDataList = Array.from(this.state); // почему то без Array.from() - возвращает ошибку. Хотя по-идее это и так уже массив
const cards = cardDataList.map(card => {
let [name, description, image] = [card.name, card.description, card.thumbnail.path + '.' + card.thumbnail.extension]
return (



  • abyss
    {name}





)
})

return(

{cards}

)

}
}

export default CharList;


*Да, я знаю что на классах, без хуков - почти никто уже не пишет, но я ток начал учить React, так что вот так вот
Голосование за лучший ответ
Semen Kapacuk Гуру (3750) 7 месяцев назад
Выведи уже внутри cardDataList, cards, card в цикле. Там скорее всего беда
Dlazder Мудрец (16877) 7 месяцев назад
getCharackters по другому пишется
Похожие вопросы