![Oracle Drags Its Feet in the JavaScript Trademark Dispute](https://cdn.sanity.io/images/cgdhsj6q/production/919c3b22c24f93884c548d60cbb338e819ff2435-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
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
The npm package react-unplug receives a total of 0 weekly downloads. As such, react-unplug popularity was classified as not popular.
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
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.