Вы можете использовать useMemo()
вместо getSnapshotBeforeUpdate()
.Подробнее о о том, как запоминать вычисления с помощью React Hooks, читайте здесь .
Вот простой пример:
Это всегда, что пользователь вводит (onChange)нерелевантное состояние с точки зрения Компонента Списка изменяется, и из-за этого он перерисовывается и может перерисовываться более 50 раз, это зависит от пользовательского набора, поэтому он используется useMemo()
для запоминания Компонента Списка и егозаявил, что просто todoList
слушает.
import List from './List'
const todo = (props) => {
const [inputIsValid, setInputIsValid] = useState(false)
const inputValidationHandler = (event) => {
if(event.target.value.trim() === '') {
setInputIsValid(false)
} else {
setInputIsValid(true)
}
}
return <React.Fragment>
<input
type="text"
placeholder="Todo"
onChange={inputValidationHandler}
/>
{
useMemo(() => (
<List items={todoList} onClick={todoRemoveHandler} />
), [todoList])
}
</React.Fragment>
}
export default todo