Печать списков с неизвестной длиной

У меня есть list(string) с неизвестной длиной, которую я хотел бы визуализировать в моем компоненте ReasonReact. Я читал, что нет встроенной поддержки печати сложных структур данных. Но как сделать вывод списка в его компоненте чисто функциональным способом без использования Javascript? Я нашел фрагмент, который достигает этого, используя рекурсию по сопоставлению с образцом. Я предполагаю, что должен быть более простой способ, поскольку это выглядит как довольно часто используемая операция.

Javascript-эквивалент того, чего я пытаюсь достичь, это Array.toString(),

1 ответ

Решение

Если я вас правильно понимаю, вам нужно выполнить два шага:

  1. Чтобы создать string вне list(string) желательно отформатировать таким же образом Array.toString то есть, через запятую, без квадратных скобок и без использования специфичных для JavaScript API.
  2. Чтобы отобразить строку как компонент ReasonReact.

Шаг 1: Строковое преобразование

Это можно сделать с помощью String.concat:

let myList = ["a", "b", "c"];
let myString = String.concat(", ", myList);

который вернется "a, b, c"

Шаг 2. Визуализация в качестве компонента ReasonReact

Визуализация строк в ReasonReact выполняется с использованием ReasonReact.string, Вот полный, работающий пример того, как компонент берет опору items типа list(string) и рендеринг в <span> элемент.

module ListRenderer = {
  let component = ReasonReact.statelessComponent("ListRenderer");
  let make = (~items, _children) => {
    ...component,
    render: _self =>
      <span> {ReasonReact.string(String.concat(", ", items))} </span>
  };
};

ReactDOMRe.renderToElementWithId(<ListRenderer items=["a", "b", "c"] />, "preview");

Ссылка на игровую площадку

Другие вопросы по тегам