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

使用内部进行反应。(对象)的内部映射

  •  1
  • DDave  · 技术社区  · 7 年前

    我知道你不能用 <html> 像字符串一样,我正在寻找解决方案,但我不清楚如何在这个复杂的逻辑中插入 <br/> 对象,而不是字符串,因为变量“newvalue”需要存储并有条件地添加br以将行中的元素分隔开来。

      let values = JSON.parse(value);
      let newvalue = '';
      values.map((item) => {
        for (const key in listViewField.subfields) {
          let nameField = key;
          if (typeof item[nameField] !=='undefined') {
            newvalue += item[nameField]+ ' ';
          }
        }
        // if (newvalue.trim() !=='') newvalue += '<br/>'; // doesn't work
      });
      value = newvalue;
      return <div key={keyIndex}>{value}</div>;
    
    2 回复  |  直到 7 年前
        1
  •  7
  •   Dan Prince    7 年前

    不需要使用映射,您只需迭代您的值并将其推入数组。

    let values = JSON.parse(value);
    let contents = [];
    
    for (let value of values) {
      contents.push(<span key={value.key}>{value.name}</span>);
    
      if (value.condition) {
        contents.push(<br key={`${value.key}-br`} />);
      }
    });
    
    return <div>{contents}</div>;
    

    不要忘记为每个项目添加一个唯一的键。

        2
  •  1
  •   BeeBee8    6 年前

    若要添加不同的选项,请将其用于 map 还有你的 item 是一个简单的字符串,那么你可以这样做。

    items.map((item, key) => {
        <span style={{whiteSpace: 'pre'}} key={key}>{item + '\n'}</span>
    });
    

    注意,我添加了 style={{whiteSpace: 'pre'}} + \n