
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
A global event emitter for React apps. Useful if you need some user interaction in one place trigger an action in another place on the page, such as scrolling a logging element when pressing PageUp/PageDown in an input element (without having to store scroll position in state).
react-bus contains a <Provider /> component and a useBus hook.
<Provider /> creates an event emitter and places it on the context.
useBus() returns the event emitter from context.
import { Provider, useBus } from 'react-bus'
// Use `bus` in <Component />.
function ConnectedComponent () {
const bus = useBus()
}
<Provider>
<ConnectedComponent />
</Provider>
For example, to communicate "horizontally" between otherwise unrelated components:
import { Provider as BusProvider, useBus, useListener } from 'react-bus'
const App = () => (
<BusProvider>
<ScrollBox />
<Input />
</BusProvider>
)
function ScrollBox () {
const el = React.useRef(null)
const onscroll = React.useCallback(function (top) {
el.current.scrollTop += top
}, [])
useListener('scroll', onscroll)
return <div ref={el}></div>
}
// Scroll the ScrollBox when pageup/pagedown are pressed.
function Input () {
const bus = useBus()
return <input onKeyDown={onkeydown} />
function onkeydown (event) {
if (event.key === 'PageUp') bus.emit('scroll', -200)
if (event.key === 'PageDown') bus.emit('scroll', +200)
}
}
This may be easier to implement and understand than lifting the scroll state up into a global store.
npm install react-bus
<Provider />Create an event emitter that will be available to all deeply nested child elements using the useBus() hook.
const bus = useBus()Return the event emitter.
useListener(name, fn)Attach an event listener to the bus while this component is mounted. Adds the listener after mount, and removes it before unmount.
FAQs
A global event emitter for react.
The npm package react-bus receives a total of 1,653 weekly downloads. As such, react-bus popularity was classified as popular.
We found that react-bus demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.