UNPKG

set-state-compare

Version:

setState for React that compares with the current state and only sets the state if changed.

40 lines (34 loc) 948 B
import {simpleObjectDifferent} from "./diff-utils.js" export default function setState(component, state, callback) { return new Promise((resolve) => { let finish // Support being a drop-in replacement by passing an extra callback option but dont spawn an extra function unless given if (callback) { finish = function() { resolve() callback() } } else { finish = resolve } if (typeof state == "function") { // We can't skip this type of setState component.setState( (prevState) => { const newState = state(prevState) if (simpleObjectDifferent(newState, prevState, false)) { return newState } return null }, finish ) } else { if (simpleObjectDifferent(state, component.state, false)) { component.setState(state, finish) } else { finish() } } }) }