Objective:
I need to check if the form has been edited by the user or not. If yes, then I will call the axios.put() function.
Issue:
Since in JS, obj1 = { name: “John “} !== obj2 = { name: “John” } I am looking for a better way to compare two objects.
My way(seems inefficient) :
const intialAddress= { city: "CA" line1: "testline1" line2: "testline2" phone: "7772815615" pin: "1234" state: "CA" } const [address, setAddress] = useState(initialAddress); let addressFinalValue = {}; const addressValue = (e) => { addressFinalValue[e.target.name] = e.target.value; }; /*************************** * The way I am doing it **************************/ const submitHandler = (e) => { e.preventDefault(); setAddress(addressFinalValue); if ( address.line1 !== initialAddress.line1 || address.line2 !== initialAddress.line2 || etc ... ) { // axios.put() } }; return ( <form onSubmit={submitHandler}> <div className="form-group"> <input id="address-line-1" className="form-control" value={address.line1} onChange={addressValue} name="line1" type="text" placeholder="Line 1" /> </div> // multiple input fields here // <button className="btn btn-success">Save Address & Continue</button> </form> )
I would really appreciate the help. Thanks in advance.
Advertisement
Answer
If you have use lodash then it’s much simplier
_.isEqual(obj1,obj2)