ianstormtaylor / react-values

A set of tiny React components for handling state with render props.
https://git.io/react-values
MIT License
1.02k stars 39 forks source link

ignore invalid arguments to `increment/decrement/etc.` #2

Open ianstormtaylor opened 6 years ago

ianstormtaylor commented 6 years ago

Right now, the convenience transforms are "smart" in that if you do:

<NumberValue>
  {({ increment }) => (
    <button onClick={increment} />
  )}
</NumberValue>

It will fail because it's actually being called as increment(event). Instead you have to write it as:

<NumberValue>
  {({ increment }) => (
    <button onClick={() => increment()} />
  )}
</NumberValue>

But this is such a common use case that it might be nice to either ignore Event objects specifically, or just ignore anything that isn't a "valid" value.

It's also easy to forget this, because onClick={toggle} or onClick={clear} works since they don't care about the event argument in the first place.

lxe commented 6 years ago

We should not ignore the explicit conventions and signature of onClick.

Also... I think this is a good case for TypeScript / Flow definitions!

ianstormtaylor commented 6 years ago

@lxe can you explain? I'm not sure I understand what you mean. Thanks!