pmndrs/leva

Hey @Sean-Bradley, a few observations:

RonBonBon opened this issue · 1 comments

Hey @Sean-Bradley, a few observations:

  • what's the problem with buttons being recreated on each render? Is there some scaling issue that I'm not aware of?
  • there's no problem with bypassing the exhaustive-deps lint rule in general, as long as you know what you're doing. We actually do that a lot in Leva 🤧

However, here the solution to your problem is pretty obvious:

 const buttons = useMemo(() => {
     const _buttons = {}
    positions.forEach((p, i) => {
      _buttons['button ' + i] = button(() => setTo(p))
    })
   return _buttons
  }, [positions, setTo])

And if you're a fan of the reduce function:

 const buttons = useMemo(() => positions.reduce((acc, p, i) =>
  Object.assign(acc, { [`button ${i}`]: button(() => setTo(p)) }), {}), [positions, setTo])

Originally posted by @dbismut in #393 (comment)

It seems you have created a new issue from an issue that was already solved and closed.
#393 (comment)

Your problem is unclear because this is a verbatim copy of just one of the comments from the original thread.