代码之家  ›  专栏  ›  技术社区  ›  xyious

我可以在react'render'语句中分配变量吗

  •  0
  • xyious  · 技术社区  · 8 年前

    我在几行上有多列数据。对于每个数据元素,我都有一个react元素。第一行可能有4到6个元素。
    例如,我显示用户名、生日和电子邮件。如果用户输入了可选信息,我也会显示。
    所以对于另一个用户,我可能会显示姓名、生日、电子邮件、电话号码和状态。
    为了不弄乱布局,我需要计算数据的开始列和结束列,以便第一个元素(名称)填充布局。

    我可以在return语句中进行内联计算,但出于抽象目的,我希望有一个函数返回start和end列。我想为每一行保存一个变量。这样地:
    {({ start, end } = getStartEnd(2, this.props))} <ColumnSpan row={1} start={start} end={end}>

    那就错了 Objects are not valid as a React child (found: object with keys {start, end}). If you meant to render a collection of children, use an array instead.

    如果我使用数组 [start, end] = ... react以某种方式将数字放得到处都是(就好像语句是执行的,变量是呈现的,而不是为下一条语句保留的一样)。

    1 回复  |  直到 8 年前
        1
  •  2
  •   xyious    8 年前

    这不是有意义的jsx。你可以这样把道具铺进去

    <ColumnSpan row={1} {...getStartEnd(2, this.props)} />
    

    您可以阅读更多关于将道具扩展到jsx的内容 here .