Что такое производное состояние? Подумайте об одном состоянии для текста, а затем о другом для текста в верхнем регистре.
function Foo() { const [text, setText] = useState('hello, za warudo!'); const [uppercaseText, setUppercaseText] = useState(text.toUpperCase()); useEffect(() => { setUppercaseText(text.toUpperCase()); }, [text]) ... }
Так сказать, безумие думать, что кто-то сделает это… верно? ВЕРНО?
Да, такой пример покажет, что это неправильно.
Скажем, это дорогостоящий расчет… решение состоит в том, чтобы использовать useMemo.
function Foo() { const [text, setText] = useState('hello, za warudo!'); const uppercaseText = useMemo(() => text.toUpperCase(), [text]); ... }
Я придумал хороший способ мышления, который должен облегчить ЗНАТЬ, должно ли состояние быть «другим состоянием» или просто вычисляемым свойством (запоминаемым или нет, в зависимости от случая).
function Foo({ text = 'hello, za warudo!', uppercaseText = text.toUpperCase(), }) { ... } // Forget react for a moment... // Would you ever call a function like this? const text = 'hello, za warudo!'; Foo({ text, uppercaseText: text.toUpperCase(), });
Если вы думаете об этих штатах как о «реквизите», то это еще более явно делает их такими, какими они должны быть.
Полностью забудьте о React, думайте только о функциях:
Вызовете ли вы функцию с переменной, а затем с другой переменной, которую можно просто вычислить внутри?
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3