React .map一个对象

时间:2019-12-08 16:06:55

标签: reactjs typescript tslint

我遇到错误错误类型“从不”的属性“日期”不存在,它位于data.date上。知道怎么解决吗?

import React from 'react'
import app from './../Flamelink'

function App() {
  const [data, setData] = React.useState([])
  React.useEffect(() => {
    const fetchData = async () => {
      const data = await app.content.get({
        schemaKey: 'persons'
      })
      setData(data)
    }
    fetchData()
  }, [])
  return (
    <ul>
      {data.map(data => (
        <li>{data.date}</li>
      ))}
    </ul>
  )
}

export default App

1 个答案:

答案 0 :(得分:2)

首先,我将使用其他变量名称,而不是仅调用所有data。这样可以避免variable shadowing errors

如果您希望状态变量为data,则调用从其他地方获取的答案,也许是result。然后,在映射您的data状态时,也可以调用当前值,例如itemdataItem

第二,由于您似乎正在使用TypeScript,因此需要告诉TS data状态数组的结构。

尝试一下:

function App() {
  const [data, setData] = React.useState<Array<{date: string}>>([]);
  React.useEffect(() => {
    const fetchData = async () => {
      const result = await app.content.get({
        schemaKey: "persons"
      });
      setData(result);
    };
    fetchData();
  }, []);

  return (
    <ul>
      {data.map(item=> (
        <li>
          {item.date}
        </li>
      ))}
    </ul>
  );
}