Skip to content

Instantly share code, notes, and snippets.

@ynwd
Created January 24, 2022 02:40
Show Gist options
  • Save ynwd/f3fda2c24d26ccb169ca414bd380795f to your computer and use it in GitHub Desktop.
Save ynwd/f3fda2c24d26ccb169ca414bd380795f to your computer and use it in GitHub Desktop.
react useCallback
import { useState, memo, useCallback } from "react"
function todos({ todos, addTodo }) {
console.log("child render")
return (
<>
<h2>My Todos</h2>
{todos.map((todo, index) => {
return <p key={index}>{todo}</p>
})}
<button onClick={addTodo}>Add Todo</button>
</>
)
};
const Todos = memo(todos)
const App = () => {
const [count, setCount] = useState(0)
const [todos, setTodos] = useState([])
const increment = () => {
setCount((c) => c + 1)
}
const addTodo = useCallback(() => {
setTodos((t) => [...t, "New Todo"])
}, [setTodos])
return (
<>
<Todos todos={todos} addTodo={addTodo} />
<hr />
<div>
Count: {count}
<button onClick={increment}>+</button>
</div>
</>
)
}
export default App
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment