DATA
export const data = [
{ id: 1, name: 'john' },
{ id: 2, name: 'peter' },
{ id: 3, name: 'susan' },
{ id: 4, name: 'anna' },
];
USE STATE
- // starts with use
- // component must be uppercase
- // invoke inside function/component body
- // don't call hooks conditonally_
import React, { useState } from 'react';
const UseStateBasics = () => {
// console.log(useState());
// const value = useState()[0];
// const handler = useState()[1];
// console.log(value, handler);
const [text, setText] = useState('random title');
const handleClick = () => {
if (text === 'random title') {
setText('hello world');
} else {
setText('random title');
}
};
return (
<React.Fragment>
<h1>{text}</h1>
<button type='button' className='btn' onClick={handleClick}>
change title
</button>
</React.Fragment>
);
};
export default UseStateBasics;
-useState array
import React from 'react';
import { data } from '../../../data';
const UseStateArray = () => {
const [people, setPeople] = React.useState(data);
const removeItem = (id) => {
let newPeople = people.filter((person) => person.id !== id);
setPeople(newPeople);
};
return (
<>
{people.map((person) => {
const { id, name } = person;
return (
<div key={id} className='item'>
<h4>{name}</h4>
<button onClick={() => removeItem(id)}>remove</button>
</div>
);
})}
<button className='btn' onClick={() => setPeople([])}>
clear items
</button>
</>
);
};
export default UseStateArray;
-useState object
import React, { useState } from 'react';
const UseStateObject = () => {
const [person, setPerson] = useState({
name: 'peter',
age: 24,
message: 'random message',
});
// const [name,setName] = useState('peter')
// const [age,setAge] = useState(24)
// const [message,setMessage] = useState('random message')
const changeMessage = () => {
setPerson({ ...person, message: 'hello world' });
// setMessage('hello world')
};
return (
<>
<h3>{person.name}</h3>
<h3>{person.age}</h3>
<h4>{person.message}</h4>
<button className='btn' onClick={changeMessage}>
change message
</button>
</>
);
};
export default UseStateObject;
-useState counter
import React, { useState } from 'react';
const UseStateCounter = () => {
const [value, setValue] = useState(0);
const reset = () => {
setValue(0);
};
const complexIncrease = () => {
setTimeout(() => {
// setValue(value + 1);
setValue((prevState) => {
return prevState + 1;
});
}, 2000);
};
return (
<>
<section style={{ margin: '4rem 0' }}>
<h2>regular counter</h2>
<h1>{value}</h1>
<button className='btn' onClick={() => setValue(value - 1)}>
decrease
</button>
<button className='btn' onClick={reset}>
reset
</button>
<button className='btn' onClick={() => setValue(value + 1)}>
increase
</button>
</section>
<section style={{ margin: '4rem 0' }}>
<h2>more complex counter</h2>
<h1>{value}</h1>
<button className='btn' onClick={complexIncrease}>
increase later
</button>
</section>
</>
);
};
export default UseStateCounter;
Top comments (1)
Just a heads up that you can add highlighting to the code blocks if you'd like. Just change:
... to specify the language:
More details in our editor guide!