Skip to content

Instantly share code, notes, and snippets.

@leodutra
Last active August 11, 2021 04:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save leodutra/4b85e2dfa5649de7ec9f687058e7585e to your computer and use it in GitHub Desktop.
Save leodutra/4b85e2dfa5649de7ec9f687058e7585e to your computer and use it in GitHub Desktop.
React - replace string by render or component
const replaceStrByRender = (
str: string,
substr: string | RegExp,
render: (part: string, i: number) => JSX.Element
) => {
if (!str || !substr) return str
const parts = str.split(substr)
const results: Array<string | JSX.Element | null> = []
let index = 0
for (let i = 0; i < parts.length; i++) {
if (parts[i]) results.push(parts[i])
if (i + 1 < parts.length) {
const rendered = render(parts[i], index++)
if (rendered) results.push(rendered)
}
}
return results
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment