Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

A flexible clickout handler for React

License

NotificationsYou must be signed in to change notification settings

k2p-ed/react-clickout-handler

Repository files navigation

A React component to handle clicking outside of an element.

travis buildLicense: MIT

Features

  • Wrap a single element or multiple elements to watch for clickout behavior
  • Ignore one or more elements (clickout behavior won't be triggered) by adding them to theignoredElements prop
  • Enable or disable the clickout behavior on the fly with theenabled prop

Installation

  yarn add react-clickout-handler

or

  npm install --save react-clickout-handler

Getting Started

importReactfrom'react'importClickOutHandlerfrom'react-clickout-handler'constMyComponent=()=>{consthandleClickOut=()=>{console.log('clicked out!')}return(<ClickOutHandleronClickOut={handleClickOut}><divclassName='modal'>          This is a modal! Click outside to close it.</div></ClickOutHandler>)}

Props

PropTypeRequiredDefaultDescription
children`Node({ [string]: Ref }) => any`true
enabledbooleanfalsetrueEnables or disables the clickout behavior. This can be useful to ensure theonClickOut callback is only executed when you want it to be.
eventsstring[]false['mousedown', 'touchstart']Allows for specifying custom events to trigger theonClickOut callback
ignoredElementsObject[]false[]An array of refs for elements to exclude from triggering the clickout behavior
refPropstringfalserefSpecify a prop name to use for getting a ref to the wrapped component. Useful if you need to get the ref for a "composed" component, or if you're using something likestyled-components, which requires use ofinnerRef to get the ref of a styled component.
wrapWithElementTypefalsenullSpecify what type of element to wrap the children with. Can be a React component or string such asdiv. If this prop is not provided, theClickOutHandler component will either clone the child element (if single child) or wrap the children in adiv (if multiple children).
onClickOut(ev: Event) => anytrueFunction to be called when the clickout behavior is triggered. Receives the click event as an argument.

Examples

Excluding element(s)

If there are any elements outside of your ClickOutHandler component that you do not want to trigger the clickout behavior when clicked, you can pass a ref to theignoredElements prop.

importReact,{Component}from'react'importClickOutHandlerfrom'react-clickout-handler'exportdefaultclassMyComponentextendsComponent{state={data:''}handleChange=(data)=>{this.setState({ data})}save=()=>{apiCall(this.state.data)}setRef=(el)=>{this.saveButton=el}render(){return(<divid='my-app'><ClickOutHandlerignoredElements={[this.saveButton]}onClickOut={handleClickOut}><SomeComponentonChange={this.handleChange}/></ClickOutHandler><buttonref={this.setRef}onClick={this.save}>          Save</button></div>)}}

Refs

ClickOutHandler relies on having a ref to its immediate child. If the child is unable to directly accept aref prop, there are two options:

Use therefProp prop

importReactfrom'react'importClickOutHandlerfrom'react-clickout-handler'importstyledfrom'styled-components'constMyDiv=styled.div`    background-color: red;  `consthandleClickOut=()=>{console.log('You clicked me!')}constMyComponent=()=>(<ClickOutHandleronClickOut={handleClickOut}refProp='innerRef'><MyDiv/></ClickOutHandler>)

Pass a function as the child

importReactfrom'react'importClickOutHandlerfrom'react-clickout-handler'importstyledfrom'styled-components'constMyDiv=styled.div`    background-color: red;  `consthandleClickOut=()=>{console.log('You clicked me!')}constMyComponent=()=>(<ClickOutHandleronClickOut={handleClickOut}>{({ ref})=><MyDivinnerRef={ref}/>}</ClickOutHandler>)

License

MIT

About

A flexible clickout handler for React

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors2

  •  
  •  

[8]ページ先頭

©2009-2025 Movatter.jp