尝试在reactJS中将数据导出到CSV时,获取错误数据应该是“字符串”、“数组数组”或“对象数组”

mot*_*570 5 javascript firebase reactjs google-cloud-firestore

我想从我在表中列出的 firebase firestore 数据库下载一些数据。

我正在添加来自 Firestore 的数据,以便导出到 CSV,并在我的管理仪表板中拥有完整的可查看文件

但每次我尝试按照步骤下载数据并将其导出为 CSV 格式时,都会收到此错误:"Data should be a "String", "Array of arrays" OR "Array of objects"

这是我的代码:

 import { CSVLink } from 'react-csv';

const [data, setData] = useState([]);
  const [csvData, setcsvData] = useState([]);
  const list = []
  const csvList = []

 useEffect(() => {
    firebase.firestore().collection("Users").get().then((userSnapshot) => {

      userSnapshot.forEach((doc) => {
       
        const {powerAccount,first_name,registerDate,email,company,country,phone} = doc.data();
        setID(doc.data().usersID)
        list.push({
          usersID:doc.id,
          powerAccount:powerAccount,
          first_name:first_name,
          registerDate:registerDate,
          email:email,
          company:company,
          country:country,
          phone:phone,
        });

        const userData = {
          usersID: doc.id,
          powerAccount: powerAccount,
          first_name: first_name,
          registerDate: registerDate,
          email: email,
          company: company,
          country: country,
          phone: phone,
        };

        const headers = [            
          { label: 'Account', key: powerAccount },
          { label: 'Name', key: first_name },
          { label: 'RegistrationDate', key: registerDate },
          { label: 'Email', key: email },
          { label: 'Company', key: company },
          { label: 'Country', key: country },
          { label: 'Phone', key: phone },
        ];
        const csvReport = {
          filename: "userReport.csv",
          headers: headers,
          data: userData
        }
        csvList.push(csvReport)
      });
      setData(list);
      setcsvData(csvList)
    });
  },[]);

 return (
   
    <CSVLink  {...csvData} >
    Export
  </CSVLink>
 
)
Run Code Online (Sandbox Code Playgroud)

Jef*_*vic 1

我通过在 CSVLink 组件周围添加条件包装器来修复此错误,这样它就不会在加载数据之前尝试创建该组件。

因此,对于您的示例,类似这样的事情可以解决问题:

{csvData && (
    <CSVLink  {...csvData} >
    Export
  </CSVLink>
)}
Run Code Online (Sandbox Code Playgroud)