Reactjs 使用typescript编辑缺少标题的记录

Reactjs 使用typescript编辑缺少标题的记录,reactjs,typescript,react-admin,Reactjs,Typescript,React Admin,为了在react admin下使用Typescript功能,我按照以下步骤键入编辑标题: interface UserTitleProps{ 记录:用户记录; } const UserTitle:FC=({record})=>{ 常量标识符=记录?.email | |记录?.phoneNumber; 如果(记录?.name){ 返回`${record?.name}(${identifier})`; } 返回标识符; }; 导出常量用户编辑:FC=(道具)=>( ); 但是上面的代码给了我以下类

为了在react admin下使用Typescript功能,我按照以下步骤键入编辑标题:

interface UserTitleProps{
记录:用户记录;
}
const UserTitle:FC=({record})=>{
常量标识符=记录?.email | |记录?.phoneNumber;
如果(记录?.name){
返回`${record?.name}(${identifier})`;
}
返回标识符;
};
导出常量用户编辑:FC=(道具)=>(
);
但是上面的代码给了我以下类型脚本错误:

Property 'record' is missing in type '{}' but required in type 'UserTitleProps'.  TS2741

    103 | export const UserEdit: FC<EditProps> = (props) => (
    104 |   <Edit
  > 105 |     title={<UserTitle />}
        |             ^
    106 |     {...props}
    107 |   >
    108 |     <UserForm />
属性“record”在类型“{}”中丢失,但在类型“UserTitleProps”中是必需的。TS2741
103 |导出常量用户编辑:FC=(道具)=>(
104 | 105 |头衔={}
|             ^
106{……道具}
107 |   >
108 |     
事实上,
记录
道具并没有真正通过,但根据和下面的示例,没有什么可添加的

我错过什么了吗


如果您仔细检查了这一点,谢谢您:

interface UserTitleProps{
记录?:UserRecord;//将其设置为可选属性
}
您会注意到,
record
是一个可选属性,但在您的代码中它是强制性的。
因此,对于您的情况,您需要传递
record
属性

但是如果你更新了那一行,使道具成为可选的,那么
TypeScript
应该停止抱怨,除非另有说明


从他们的

React admin说,当您以
标题
的形式传递一个元素时,它将被克隆。
并且从
中,当前记录将被注入
标题

因此,您永远不必显式地传递
记录
道具。
因此,当添加到界面时,
record
应该始终是一个“可选”道具,因为您不必直接传递它

,你可以看到下面发生了什么,以防你对细节感兴趣

export-const-UserEdit:FC=(道具)=>{
返回(
);
};

此代码帮助我处理此问题。我的代码示例如下:

const EditTitle = ( record : any ) => {
  return <span>Change feed state of {record.record ? `${record.record.feed}` : ''}</span>;
};
const EditTitle=(记录:任意)=>{
返回{record.record?`${record.record.feed}`:''的更改提要状态;
};

调试打印后,我意识到record实际上是一个对象,包含带有所需字段的record属性。我也使用TS。

这确实停止了Typescript的抱怨。但是,这是第二个问题:我应该从哪里将记录数据传递到组件道具?我已经更新了答案,向您展示了如何传递属性
record
prop.谢谢,我会试试!但是console.log在这里看起来很粗糙。我试过了,但这给我带来了一个错误:
属性“record”在类型“EditProps&{children?:ReactNode;}”上不存在。
不客气。我发现我们对
标题
prop中发生的事情完全一致。