React hooks are new features introduced in React Typescript.
This tutorial explains about useState
hook in React Typescript.
useState hook used to store data in the typescript react component.
Typescript is a typed language, and every value must be declared with type.
So data stored in the State must be declared with type explicitly.
Here is a syntax for useState hook
const [property, setProperty] = useState<type>(default value)
a default value can be passed
- numbers with zero
- String with ""
- boolean with false
- Array with []
- Objects with an empty object with property values have defaulted.
setProperty with type allows you to accept declared types and avoid runtime errors.
React Typescript useState hook with primitive types
Following are different primitive data types with the useState hook can also be defined with type inference
const [property, setProperty] = useState(default value)
type is inferred from the default value.
const [loading, isLoading] = useState(false)
Here, the loading
value is inferred as a boolean type, isLoading function takes a boolean value
which is equivalent to
const [loading, isLoading] = useState<boolean>(false)
Here are String and number types
const [salary, setSalary] = useState<number>(5000)
const [name, setName] = useState<string>("john")
Here is an example of setting the string in the useState React hook example.
import React, { Dispatch, FC, useState } from 'react';
interface Student {
name: string ;
marks: number ;
}
function UseStateExample(){
const [message, setMessage] = useState("") // type is string
const updateMessage=()=>{
setMessage("w3schoolsio")
}
return (
<>
<h1>Welcome - {message}</h1>
<button onClick={() => { updateMessage() }}>Chnage</button>
</>
);
};
export default UseStateExample;
React typescript useState object example
This example talks about how to assign the object to the State and assign default value using typescript.
- Created an interface type for holding the object.
useState<Student>
used with type, setting the state accepts object type only- Default value in the state is assigned with an empty object with default property values.
import React, { useEffect, useState } from 'react';
interface Student {
id: number;
name: string;
};
function UseStateExample(){
const [student, setStudent] = useState<Student>({id:0,name:""});
useEffect(() => {
setStudent({
id:11,
name : "john",
});
}, []);
return (
<>
<h1>Welcome</h1>
<div>
id: {student.id} - name: {student.name}
</div>
</>
);
};
export default UseStateExample;
React typescript useState Array of objects.
This example assigns a setState hook with an array of objects
- Declare an Object using an interface or Type alias interface example:
interface User {
id: number;
name: string;
};
using type alias
type User = {
id: number;
name: string;
};
- Initial value in useState in one of the following An initialized array of objects with square brackets[].
const [users, setUsers] = useState<User[]>([]);
Another way the state accepts an array of generic types.
const [users, setUsers] = useState<{id: number; name: string}[]>([])
- And the Type declared for the state is
useState<User[]>
Here is an example
import React, { useState } from 'react';
interface User {
id: number;
name: string;
};
function UsersComponent(){
const [users, setUsers] = useState<User[]>([]);
const addUser=()=>{
setUsers(prevUsers => [
...prevUsers,
{id: 1, name: 'name'},
])
}
return (
<>
<h1>Welcome</h1>
<button onClick={() => { addUser() }}>Add</button>
<h1>Listof Users</h1>
{users.map((user, index) => {
return (
<div key={index}>
<div>
id: {user.id} - name: {user.name}
</div>
</div>
);
})}
</>
);
};
export default UsersComponent;