function Increment(){
	setCount( count +1)
	setCount( count +1)
	setCount( count +1)
	setCount( count +1)
}

Explanation: you expect the output to be 4 but the actual output is 1 due to the concept of batching. Can you avoid using the previous state:

function Increment(){
	setCount( preState => preState +1)
	setCount( preState => preState +1)
	setCount( preState => preState +1)
	setCount( preState => preState +1)
}
Output: 4

2 - if you are getting props from the parent component and if the props are invalid. Instead of throwing invalid props directly through the if statement. We can conditionally render the error message on the jsx. If you return directly at the top component, return JSX is unreachable code(never execute.) And also it throws a weird error. Bad :

If(![props.name](<http://props.name/>)) return

Good :

{![Props.name](<http://props.name/>) : <div>{invalid name}</div> ? <div>{[props.name](<http://props.name/>)}</div>

3 - update a single property from the object which contains multiple properties : UseState variable is an immutable object. This means every setter function call, a new instance will be created. If you update a single property in the object, expect the new change, remaining existing properties removed. You can avoid this problem, during updation, by first copy the existing properties and then overriding the single property or adding a new one. Bad :

SetInfo({[info.name](<http://info.name/>):"shivaji"})

Good :

SetInfo(preState => ({
	...preState,
	[info.name](<http://info.name/>):"shivaji"
} ) )

Single function to update the multiple properties of a state variable : Method-1: this is OK, but you need to write multiple functions for individual properties to update their value.

function onChange(event){
	SetInfo(preState =>({
		...preState,
		FirstName: event.target.value,
}))

Method-2 : single function for multiple properties to update their value.

function onChange(event){
	SetInfo(preState =>({
		...preState,
		[[event.target.name](<http://event.target.name/>)]: event.target.value,
}))

Note: you can also pass the property name as a parameter to the function.