Skip to content

Compose events helper #32

@souporserious

Description

@souporserious

Would you consider adding a helper utility to help compose events if you want to use the same ones being used by a react-powerplug component?

A contrived example, but I'm using something like this right now:

function composeEvents(internalEvents, externalEvents) {
  return Object.keys(externalEvents).reduce((composedEvents, key) => {
    const internal = internalEvents[key]
    const external = externalEvents[key]
    return {
      ...composedEvents,
      [key]: internal
        ? (event, ...args) => {
            internal(event, ...args)
            external(event, ...args)
          }
        : external,
    }
  }, {})
}

// usage
const HoveredDiv = ({ children, onMouseEnter, onMouseLeave, ...restProps }) => (
  <Hover>
    {({ isHover, bindHover }) => (
      <div
        {...composeEvents({ onMouseEnter, onMouseLeave }, bindHover)}
        {...restProps}
        children={children(isHover)}
      />
    )}
  </Hover>
)

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions