【问题标题】:TypeError: Cannot read property 'title' of undefined while trying to access data from an array of objectsTypeError:尝试访问对象数组中的数据时无法读取未定义的属性“标题”
【发布时间】:2020-09-26 08:49:47
【问题描述】:

我正在尝试使用 axios 从 mongodb 获取数据,我在应用 GET 方法时收到一个对象数组,但我无法正确存储状态中的数据并以所需形式使用状态中的数据,我想在这里获取一个特定的 ker 值,即标题。请帮我解决这个问题或提出更好的方法。

 [state, setState] = useState()
 useEffect( async () =>
 {
  axios({
   "method": "GET",
    "url": "http://localhost:5500/api/add/",
   "headers": {
     "Content-Type": "application/json",
   }
 })
 .then((response) => {
   setState(response.data)
 })
 .catch((error) => {
   console.log(error)
 })

const title = state[1].title
 
console.log(title)
    }, state)

数据作为具有键值对的对象数组存储在 mongodb 中,当我使用 input - console.log(response.data[1].title) 时收到以下输出

output- title-2

对于数据对象:

1:{_id:“5f6e10d3509b062528381884”,标题:“title-2”,详细信息: "details-2", __v: 0}

之后,当我使用console.log(state[1].title)时,我收到了

TypeError:尝试读取时无法读取未定义的属性“标题” 从对象数组访问数据

【问题讨论】:

  • setState 是做什么的?从您看来,您声明 stateuseEffect 的返回值,这是一个未决的承诺。

标签: javascript reactjs mongodb axios use-state


【解决方案1】:

我认为您在 axios 返回数据并将其保存到状态之前要求 state[1].title。 如果这种情况意味着你stateunderfined

【讨论】:

  • 是的,即使我认为是这样,但它也在为state[1] 提供输出,对解决方案有什么建议吗?
  • 执行此操作 [state, setState] = useState([]) 并在该响应数组中循环并将对象添加到状态。
猜你喜欢
  • 2023-03-20
  • 2021-11-02
  • 1970-01-01
  • 2018-03-19
  • 2020-09-12
  • 2022-01-01
相关资源
最近更新 更多