complex usestate - store objects to be changebales

PHOTO EMBED

Tue Jun 27 2023 22:11:54 GMT+0000 (Coordinated Universal Time)

Saved by @sarfraz_sheth #react.js

---------------------  App Page --------------------
import React, { useState } from "react";
import Form from "./Form";

function App() {
  const [fullName, setFullName] = useState({
    fname: "f",
    lname: "n"
  });

  return (
    <div className="container">
        <div>
          <h1>Hola {fullName.fname + " " + fullName.lname}</h1>
          <Form setFullName={setFullName} />
        </div>
    </div>
  );
}

export default App;


---------------------  Form Page --------------------

import React, { useState } from "react";
import FormInput from "./FormInputs";

function Form(params) {
  
  function getfullname(event) {
    const newValue = event.target.value;
    const inputName = event.target.name;


    params.setFullName((prevName) => {
      if (inputName === "fname") {
        return { fname: newValue, lname: prevName.fname };
      } else if (inputName === "lname") {
        return { fname: prevName.lname, lname: newValue };
      }
    });
    // --------- laternative by using desturcturing code
      function getfullname(event) {
    	const { name, value } = event.target;
    	params.setFullName((prevName) => {
      	if (name === "fname") {
        	return { fname: value, lname: prevName.fname };
      	} else if (name === "lname") {
        	return { fname: prevName.lname, lname: value };
     	 }
    	});

    //params.setFullname(event.target.value);
  }
    
    
    //-------------- final of destructuring code

    //params.setFullname(event.target.value);
  }

  return (
    <form className="form">
      <FormInput
        type="text"
        name="fname"
        placeholder="Username"
        onchange={getfullname}
      />
      <FormInput
        type="text"
        name="lname"
        placeholder="Lastname"
        onchange={getfullname}
      />
      <FormInput type="password" placeholder="Password" />
    </form>
  );
}

export default Form;

content_copyCOPY

objeect stored in setstate function and if condition set to set an event. to trigger.