有没有办法在React Native中动态循环docxtemplater?

问题描述 投票:0回答:1

我不知道是否可能,但我想使用 Docxtemplater 在我的 React Native 中创建一个循环,但我想控制此循环在文档中重复的次数,具体取决于我的数组中的项目数,就好像它是 forforeach

这是我正在使用的代码的一部分:

//Array with the data that will be accessed,can reach a maximum of 12 items
export const collections = [
{name: 'item 1', unitMeasure: 'TRIP/UNIT', value: '100'}
{name: 'item 2', unitMeasure: 'TRAVEL', value: '200'}
{name: 'item 3', unitMeasure: 'UNIT', value: '300'}
{name: 'item 4', unitMeasure: 'TRIP/UNIT', value: '400'}]

}

//Code that will be used to create the loop in the document
doc.render({

"collect": [
         { name: collections[0].name, unit: collections[0].unitMeasure, value: collections[0].value},
         { name: collections[1].name, unit: collections[1].unitMeasure, value: collections[1].value},
         { name: collections[2].name, unit: collections[2].unitMeasure, value: collections[2].value},
         { name: collections[3].name, unit: collections[3].unitMeasure, value: collections[3].value},
          ])}

我的问题是我是否可以缩短这部分循环并执行类似于我在 C# 中所做的操作,如下所示:

for (int i = 0; i < collections.Length; i++)
        {
            name: collections[i].name, unit: collections[i].unitMeasure, value: collections[i].value
        }

我尝试使用 forforeach 但没有成功...

javascript typescript react-native docx docxtemplater
1个回答
0
投票

在 JavaScript 中,您可以使用

for
等数组方法实现与
map()
循环相同的迭代功能。使用 Docxtemplater 时,您通常不需要为每次迭代手动构建数据对象;相反,您可以直接传递整个数组作为模板渲染过程的上下文。以下是具体操作方法:

export const collections = [
  { name: 'item 1', unitMeasure: 'TRIP/UNIT', value: '100' },
  { name: 'item 2', unitMeasure: 'TRAVEL', value: '200' },
  { name: 'item 3', unitMeasure: 'UNIT', value: '300' },
  { name: 'item 4', unitMeasure: 'TRIP/UNIT', value: '400' }
];

// The actual code to render the document would look something like this:
doc.render({
  collect: collections.map(item => ({
    name: item.name,
    unit: item.unitMeasure,
    value: item.value
  }))
});

在上面的例子中,我们使用

map()
方法将
collections
转换为 Docxtemplater 期望的格式。此过程会自动处理
collections
数组中任意数量的项目。

请确保您的 Docxtemplater 模板具有适当的循环语法。使用 Docxtemplater,您通常使用

{#tagName}
{/tagName}
语法在模板中定义循环。

例如,您的 Word 模板将包含以下内容:

{#collect}
Name: {name}
Unit Measure: {unit}
Value: {value}
{/collect}

当 Docxtemplater 使用

collect
数组提供的上下文处理此模板时,它将为数组中的每个对象重复
{#collect}
{/collect}
标签中的内容。

© www.soinside.com 2019 - 2024. All rights reserved.