Я настроил API с Rails, с конечной точкой http://localhost:3001/api/words
, которая предоставляет следующие данные:
[{"id":1,"term":"Reach","definition":"Reach is the number of people who had any content from your Page or about your Page enter their screen.","example":"","author":"Loomly","credit":"https://www.loomly.com/","created_at":"2018-11-02T03:21:20.718Z","updated_at":"2018-11-02T03:21:20.718Z"},{"id":2,"term":"Emoji","definition":"A small digital image or icon used to express an idea, emotion, etc., in electronic communication","example":"","author":"Loomly","credit":"https://www.loomly.com/","created_at":"2018-11-02T03:23:50.595Z","updated_at":"2018-11-02T03:23:50.595Z"}]
Я сейчас пытаюсь просто отобразить эти данные (в идеале в виде неупорядоченного списка) в приложении внешнего интерфейса React.js, созданном с Create React App
, и вот содержимое моего App.js
файла:
import React, { Component } from 'react';
import './App.css';
class App extends Component {
constructor () {
super()
this.state = {}
this.getWords = this.getWords.bind(this)
this.getWord = this.getWord.bind(this)
}
componentDidMount () {
this.getWords()
}
fetch (endpoint) {
return window.fetch(endpoint)
.then(response => response.json())
.catch(error => console.log(error))
}
getWords () {
this.fetch('/api/words')
.then(words => {
if (words.length) {
this.setState({words: words})
this.getWord(words[0].id)
} else {
this.setState({words: []})
}
})
}
getWord (id) {
this.fetch(`/api/words/${id}`)
.then(word => this.setState({word: word}))
}
render () {
let {words, word} = this.state
return (
<div>
{Object.keys(words).map((key) => {
return (
<div key={word.id}>
<p>{word.term}</p>;
</div>
)
})}
</div>
)
}
}
export default App;
Я считаю, что проблема находится в следующей области кода:
render () {
let {words, word} = this.state
return (
<div>
{Object.keys(words).map((key) => {
return (
<div key={word.id}>
<p>{word.term}</p>;
</div>
)
})}
</div>
)
}
Я пытался выполнить шаги, описанные в этого урока , а также в этого другого урока , сохраняя при этом макет страницы максимально простым (без колокольчиков и свистит с semantic-ui-css
), и что бы я ни пытался, я постоянно получаю следующие ошибки:
TypeError: Cannot convert undefined or null to object
Unexpected token, expected “,”
Failed to compile: 'word' is not defined no-undef
Решение, объясненное в этой статье , привело меня к коду, который у меня есть сейчас, но есть кое-что, чего мне не хватает в способе структурирования моего приложения React: можете ли вы указать мне правильное направление?