【问题标题】:React spread operation of JSX elements inside map反应地图内JSX元素的展开操作
【发布时间】:2020-07-05 22:29:27
【问题描述】:

我正在为 Picker 映射数组中的一个数组,并且正在努力弄清楚如何返回 JSX 元素而不是 JSX 元素数组。

代码示例:

{modelA.map((mA) => {
    const pickerItems = mA.modelB.map((mA) =>
        <Picker.Item value={mA} ... />,
    );
    return pickerItems;
})}

通常我的方法是使用扩展运算符。但他们在这种语法中表现不佳。

这个:

{...modelA.map((mA) => {
    const pickerItems = mA.modelB.map((mA) =>
        <Picker.Item value={mA} ... />,
    );
    return pickerItems;
})}

是非法的:React 不支持传播子节点。

我对此的肮脏看法是在渲染前对其进行配置。但我宁愿不要。

有什么建议吗?

【问题讨论】:

  • 试试modelA.flatMap
  • 好像不适用

标签: javascript reactjs typescript react-native jsx


【解决方案1】:

你可以只使用reduce:

{modelA.reduce((arr,mA) => {
    mA.modelB.forEach((mA) => {
        arr.push(<Picker.Item value={mA} ... />)
    });
    return arr;
}), []}

【讨论】:

    猜你喜欢
    • 2018-08-21
    • 2021-05-25
    • 1970-01-01
    • 2019-06-20
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    • 2021-09-29
    相关资源
    最近更新 更多