Печать списков с неизвестной длиной
У меня есть list(string)
с неизвестной длиной, которую я хотел бы визуализировать в моем компоненте ReasonReact. Я читал, что нет встроенной поддержки печати сложных структур данных. Но как сделать вывод списка в его компоненте чисто функциональным способом без использования Javascript? Я нашел фрагмент, который достигает этого, используя рекурсию по сопоставлению с образцом. Я предполагаю, что должен быть более простой способ, поскольку это выглядит как довольно часто используемая операция.
Javascript-эквивалент того, чего я пытаюсь достичь, это Array.toString()
,
1 ответ
Если я вас правильно понимаю, вам нужно выполнить два шага:
- Чтобы создать
string
внеlist(string)
желательно отформатировать таким же образомArray.toString
то есть, через запятую, без квадратных скобок и без использования специфичных для JavaScript API. - Чтобы отобразить строку как компонент 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");