如何使用具有不同变量名称的数据?

eu97

我有一个组件,应该从api获取并使用不同的变量名呈现数据。我有两个响应,它们具有相同的数据,但具有不同的变量名称,例如:

FirstReq {
    id          number
    published   boolean
    publishDate string
    newsImage   string
    newsText    string
    newsTitle   string
}

SecondReq {
    anons        string
    archived     boolean
    fullText     string
    id           number
    postingDate  string
    title        string
}

通常我通过变量名使用它:

interface ItemProps {
  item: {
    id: number,
    title: string,
    fullText: string,
    anons: string,
    postingDate?: string,
    image?: string,
  },
}

const Item: React.FC<ItemProps> = (props) => {
  const { item } = props;
  const { id, postingDate, title, anons, image, fullText } = item;

  return (
    <>
      <div>{title}</div>
      <div>{postingDate}</div>
      <div>{fullText}</div>
    </>
  )
}

export default Item

但是,如何编写组件以将其与不同的变量名称一起使用?“文本”的变量可以是“ fullText”或“ newsText”或“ articleText”,是否可以在一个通用组件中进行渲染?不知道怎么写。任何人都可以提供帮助或提供建议的方法吗?

扎克

IMO最好的解决方案始终是统一从不同的API接收的数据,如果由于某种原因这不可能,并且应该从您的角度进行处理,则有不同的处理方法,我建议作为一种有效的方法是拥有独特的界面,然后映射数据以创建与该界面匹配的模型

例如:

interface ItemInterface {
  id: number,
  title: string,
  postingDate?: string,
  ...
}

您会得到不同的响应,一个带有postingDate,另一个带有不同的name publishDate,因此您可以执行以下操作:

class Item implements ItemInterface {
  constructor(itemData) {}
 
  get postingDate() {
    return itemData.postingDate || itemData.publishDate;
  }
  ...
  ...
}

然后在您的组件中,您可以执行以下操作:

const { id, postingDate, title, anons, image, fullText } = new Item(item);

实际上,您可以通过创建一个新的简单对象来实现相同目的,该对象以类似的方式获取值:

const unifiedItem: ItemInterface = {
  postingDate: itemData.postingDate || itemData.publishDate
  ...
}

其他一些建议:

  • 为物品本身有一个单独的界面,然后,如果您想拥有道具界面,可以是,例如:
interface ItemPropsInterface {
  item: ItemInterface
}
  • 同样,一些重命名可能有助于区分事物(许多事物称为item ...)
  • 如果你想从道具中得到物品,你可以拥有 const Item: React.FC<ItemProps> = ({item}) => {

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

引用具有变量名称的新工作表

来自分类Dev

jQuery:使用具有变量名称的类追加到div

来自分类常见问题

如何使用具有不同变量集的模板模块?

来自分类Dev

使用具有不同变量的函数

来自分类Dev

如何获得具有相同变量名称的不同活动/片段的变量属性?

来自分类Dev

具有相同变量名称的不同结构

来自分类Dev

Laravel数据表服务使用具有不同名称的关系

来自分类Dev

AngularJS验证引用具有变量名称的表单对象

来自分类Dev

调用具有包含多个下划线的变量名称的子

来自分类Dev

如何在Android Studio中使用具有不同应用名称的口味?

来自分类Dev

如何使用具有不同模板参数的变量制作矢量?

来自分类Dev

如何从外部向量中使用具有不同值的数据框列(使用dplyr)

来自分类Dev

在Node JS中引用具有相同局部作用域变量名称的全局作用域变量

来自分类Dev

如何在Codeigniter中使用具有相同名称的多个输入插入数据

来自分类Dev

如何使用具有相同名称的“数据目标”属性创建多个弹出窗口

来自分类Dev

如何在Codeigniter中使用具有相同名称的多个输入插入数据

来自分类Dev

在Perl中使用具有相同变量名的@和$

来自分类Dev

我可以两次使用具有相同变量名的Set命令吗?

来自分类Dev

使用具有不同数据结构的 C 库

来自分类Dev

如何使用具有不同字典和字典列表的数据爆炸熊猫列

来自分类Dev

如何使用具有不同数据结构的XSLT替换公共节点XML?

来自分类Dev

Angular 2:如何使用具有不同数据的相同子组件?

来自分类Dev

如何使用具有不同特征维度的数据集训练 sklearn 分类器?

来自分类Dev

如何使用具有不同列长 ggplot2 的数据构建累积密度图?

来自分类Dev

如何使用具有不同数据源链接的相同发布的 PowerBI 报告?

来自分类Dev

具有变量名称的访问元素

来自分类Dev

选择具有变量名称的属性

来自分类Dev

具有变量名称的访问元素

来自分类Dev

如何使用具有不同 AngularJS id 的 jQuery

Related 相关文章

  1. 1

    引用具有变量名称的新工作表

  2. 2

    jQuery:使用具有变量名称的类追加到div

  3. 3

    如何使用具有不同变量集的模板模块?

  4. 4

    使用具有不同变量的函数

  5. 5

    如何获得具有相同变量名称的不同活动/片段的变量属性?

  6. 6

    具有相同变量名称的不同结构

  7. 7

    Laravel数据表服务使用具有不同名称的关系

  8. 8

    AngularJS验证引用具有变量名称的表单对象

  9. 9

    调用具有包含多个下划线的变量名称的子

  10. 10

    如何在Android Studio中使用具有不同应用名称的口味?

  11. 11

    如何使用具有不同模板参数的变量制作矢量?

  12. 12

    如何从外部向量中使用具有不同值的数据框列(使用dplyr)

  13. 13

    在Node JS中引用具有相同局部作用域变量名称的全局作用域变量

  14. 14

    如何在Codeigniter中使用具有相同名称的多个输入插入数据

  15. 15

    如何使用具有相同名称的“数据目标”属性创建多个弹出窗口

  16. 16

    如何在Codeigniter中使用具有相同名称的多个输入插入数据

  17. 17

    在Perl中使用具有相同变量名的@和$

  18. 18

    我可以两次使用具有相同变量名的Set命令吗?

  19. 19

    使用具有不同数据结构的 C 库

  20. 20

    如何使用具有不同字典和字典列表的数据爆炸熊猫列

  21. 21

    如何使用具有不同数据结构的XSLT替换公共节点XML?

  22. 22

    Angular 2:如何使用具有不同数据的相同子组件?

  23. 23

    如何使用具有不同特征维度的数据集训练 sklearn 分类器?

  24. 24

    如何使用具有不同列长 ggplot2 的数据构建累积密度图?

  25. 25

    如何使用具有不同数据源链接的相同发布的 PowerBI 报告?

  26. 26

    具有变量名称的访问元素

  27. 27

    选择具有变量名称的属性

  28. 28

    具有变量名称的访问元素

  29. 29

    如何使用具有不同 AngularJS id 的 jQuery

热门标签

归档