【发布时间】:2021-07-10 14:05:54
【问题描述】:
import React, { useEffect, useState } from 'react';
import { useParams } from 'react-router-dom';
import { useMount, useAsyncFn } from 'react-use';
import { Grid } from '@material-ui/core';
import { useTranslation } from 'react-i18next';
import LegalEntitiesService from 'shared/services/LegalEntitiesService';
import { TextField } from 'shared/components/Form';
const LegalEnityInformation: React.FC= () => {
const { legalEntityId } = useParams();
const { t } = useTranslation();
const [legalEntity, setLegalEntity] = useState<any>({
id: null,
name: '',
address: '',
municipalityCode: '',
eik: '',
municipality: { name: '' },
});
useMount(() => {
if (legalEntityId) {
fetchData();
}
});
const [legalEntityData, fetchData] = useAsyncFn(
() => LegalEntitiesService.getLegalEntity(legalEntityId),
[]
);
useEffect(() => {
if (
!legalEntityData.loading &&
legalEntityData.value &&
!legalEntityData.error
) {
const data: any = legalEntityData.value.data;
setLegalEntity({ ...data });
} else if (legalEntityData.error) {
// console.log(legalEntityData.error.message);
}
}, [legalEntityData]);
return (...);
};
export default LegalEnityInformation;
我不明白为什么类型 {} 上不存在属性 legalEntityId
我应该添加接口/构造函数吗?
让我们将 legalEntityId 定义为一个数字,也许会更好?
类似接口 Props { legalEntityId? =数字}?
【问题讨论】:
-
React Router 文档说“useParams 返回一个由 URL 参数的键/值对组成的对象”。我的想法是检查该对象的内容(可能是 console.log),看看是否存在 legalEntityId 属性。
标签: javascript reactjs typescript types react-router