У меня есть файл JSON для моих данных:
{
"EIC": {
"id": "EIC",
"text": "Want to do a quick word game?",
"replies": ["Sure", "Later"]
},
"YMB": {
"id": "YMB",
"text": "Okay, tomorrow. Cya!",
"replies": ["bye Woebot"],
}
}
Я хочу отобразить массив ответов, чтобы мы могли видеть различные возможные ответы в HTML.
Вот мой компонент на данный момент:
import React from 'react';
import axios from 'axios';
import style from "../styles/entry.css";
import * as allornothing from '../allornothing.json';
class EntryList extends React.Component {
constructor(props) {
super(props);
this.state = {
list: Object.values(allornothing)
}
}
renderReplies(replies) {
return replies.map((reply) => {
return (
<div class="entry-body col-12">
<button class="back">{ reply }</button>
</div>
)
})
}
render() {
return (
<div class="row" id="entries-list">
{this.state.list.map(function(entry) {
return (
<div class="col-md-4 col-sm-12">
<div class="entry col-12">
<div class="row">
<div class="entry-header col-12">
<div class="entry-id">
<span>{entry.id}</span>
</div>
<p>{entry.text}</p>
</div>
{ this.renderReplies(entry.replies) }
<div class="entry-manage col-12">
<div class="row">
<span class="manage-button">
<i class="fas fa-comments"></i> Add new answer
</span>
<span class="manage-button">
<i class="fas fa-pencil-alt"></i> Modify
</span>
</div>
</div>
</div>
</div>
</div>
)
})}
</div>
)
}
}
export default EntryList
Но я получаю эту ошибку:
TypeError: Невозможно прочитать свойство 'renderReplies' из неопределенного
Хотя, если я заменю { this.renderReplies(entry.replies) }
на console.log(entry.replies)
, он печатает ответы на все вопросы.
Я также попробовал это решение , прежде чем придумать функцию renderReplies
, но у меня просто та же ошибка ...
Также, если я добавлю {entry.replies}
в мой HTML-код, он также отобразит список строк.
Кто-нибудь знает, почему я получаю эту ошибку и как я могу отобразить свой список ответов? Спасибо.