Это немного сложно, для упрощения мы заменяем только один заполнитель (1)
:
const App = () => {
return <div>{splitAndRender(text, `(1)`, Component1)}</div>;
};
Где splitAndRender
может быть реализовано как:
const splitAndRender = (text, regex, Component) => {
const splitByRegex = text.split(regex);
return splitByRegex.reduce((acc, curr, index) => {
const isLastItem = index === splitByRegex.length - 1;
return [...acc, curr, isLastItem ? null : <Component key={index} />];
}, []);
};
Для неизвестного номера заполнителей, это должно быть выполнено путем восстановления возвращенного массива из splitAndRender
, поиска строк и вызова splitAndRender
для таких строк.