![38% of CISOs Fear They’re Not Moving Fast Enough on AI](https://cdn.sanity.io/images/cgdhsj6q/production/faa0bc28df98f791e11263f8239b34207f84b86f-1024x1024.webp?w=400&fit=max&auto=format)
Security News
38% of CISOs Fear They’re Not Moving Fast Enough on AI
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
react-unplug
Advanced tools
Promise-wrapper to manage the state of react components. Inspired by this article from React blog.
# npm
npm install react-unplug
# yarn
yarn add react-unplug
For React components, that use fetch to update the state, unmounting can lead to the following issue:
setState(…): Can only update a mounted or mounting component. This usually means you called setState() on an unmounted component. This is a no-op
The correct way to fix this issue, according to the article, is to cancel any callbacks in componentWillUnmount
, prior to unmounting.
React-unplug uses the idea of socket–plug–unplug to prevent setting the state of a react component once it is told to do so.
Let's say you have a react component that fetches a resource and once it's successfully done, fetches related resources. Usually you want to do that in componentDidMount
.
componentDidMount() {
fetchResource(this.props.url)
.then(item => {
this.setState({item})
fetchRelatedResources(item)
.then(relatedItems => {
this.setState({relatedItems});
})
.catch(error => { /* handle */ })
})
.catch(error => { /* handle */ });
}
If a user's actions cause the component unmounting or rerendering with different props, there is a chance, that setState
will try to set state of an unmounted component. In this case react will give us very nice warning that we might want to get rid off.
To do so, let's plug our promises to the socket. This gives us a way to unplug them when we need, preventing a call to setState
.
import unplug from 'react-unplug';
Let's update our component with wired promises:
socket = unplug.socket();
componentDidMount() {
this.socket.plug(wire => wire(
fetchResource(this.props.url),
item => {
this.setState({item});
wire(
fetchRelatedResources(item),
this.setState({relatedItems}),
error => { /* handle */ }
)
},
error => { /* handle */ }
));
}
componentWillUnmount() {
this.socket.unplug();
}
Done! Wired promises' onFulfilled, onRejected handlers won't be called once the socket is unplugged.
# with npm
npm test
# with yarn
yarn test
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.
SemVer is used for versioning. For the versions available, see the tags on this repository.
This project is licensed under the MIT License - see the LICENSE file for details.
FAQs
Promise-wrapper to manage the state of react components
We found that react-unplug 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
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Research
Security News
Socket researchers uncovered a backdoored typosquat of BoltDB in the Go ecosystem, exploiting Go Module Proxy caching to persist undetected for years.
Security News
Company News
Socket is joining TC54 to help develop standards for software supply chain security, contributing to the evolution of SBOMs, CycloneDX, and Package URL specifications.