react-string-replace icon indicating copy to clipboard operation
react-string-replace copied to clipboard

Natural index numbers on callback function

Open hallaji opened this issue 4 years ago • 2 comments

Hi there 👋

I have a situation where I'd like to replace the matched regex with my own array of nodes respectively. It would be great receiving natural index numbers 0, 1, 2 on callback instead of odd ones.

const nodes: React.ReactNodeArray

// [
//   <span key='something'>label</span>,
//   <h1 key='otherthing'>heading</h1>
// ]

reactStringReplace('These are my {} and {} and {} values.', /({})/g, (match, i) => {
  // odd index numbers
  return nodes[(i - 1) / 2]
})

hallaji avatar Jul 19 '20 08:07 hallaji

Hm, that would prob be more intuitive since no one needs to know how the iteration is taking place from the outside. Candidate for a v2 since that could potentially break functionality people are using, even if it wasn't intended functionality.

In the meantime for anyone else needing this functionality I'd suggest the more verbose, less elegant counter approach.

let count = -1;
reactStringReplace('These are my {} and {} and {} values.', /({})/g, (match, _) => {
  count++;
  return nodes[count]
})

iansinnott avatar Jun 28 '22 10:06 iansinnott

I suggest adding a note to README.md about the returned index values for now. In my opinion, the currently returned values are quite unexpected.

Nitue avatar Jul 13 '22 20:07 Nitue