как я могу установить это вложенное состояние? - PullRequest
0 голосов
/ 03 августа 2020

У меня есть API, который я получаю из моего бэкэнда rails, который выглядит так:

[
{
"id": 1,
"name": "Module 1",
"topics": [
{
"id": 1,
"name": "Iterators and Helpers",
"course_id": 1,
"resources": [
{
"id": 1,
"name": "Some Lecture",
"private": false,
"topic_id": 1,
"users": []
}
]
},
{
"id": 2,
"name": "Object Oriented Ruby",
"course_id": 1,
"resources": []
},
{
"id": 3,
"name": "One to Many Relationships",
"course_id": 1,
"resources": []
},

и так далее. В каждом модуле много тем, и у каждой темы много ресурсов. Я предполагаю, что состояние должно выглядеть вложенным, как это, но я не уверен:

state = {
    modules: [{
      topics: [{
        resources: []
      }]
    }]
  }

Я также не уверен, как setState внутри выборки, но пока у меня есть что-то вроде этого:

componentDidMount(){
    fetch('http://localhost:3000/courses')
      .then(response => {return response.json()})
      .then(module => {
         this.setState({
           courses: module.map(individualModule => {return individualModule}).
            topics: module.map(individualModule => {
                 return individualModule.map(topic => {return topic}),
              resources: 'same thing but iterated over once again'

})
    })
  }

Это правильный способ установки вложенного состояния? Моя цель - позже включить форму, которая позволит пользователю создавать новые ресурсы (запрос POST), которые будут изменять состояние ресурсов (и, в свою очередь, тем и модулей). Я также хочу отображать каждый отдельный курс, который однажды нажатие на отобразит соответствующие темы, а затем, в свою очередь, нажатие на темы отображает соответствующие ресурсы - вот почему мне нужны все 3 состояния. **** Также надеюсь не использовать сокращение, так как это меня очень смущает.

...