Печать списков с неизвестной длиной - PullRequest
0 голосов
/ 10 октября 2018

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

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

1 Ответ

0 голосов
/ 10 октября 2018

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

  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");

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

...