没有真正得到 useReducer 钩子
Not really getting the useReducer hook
我正在尝试更改 select 菜单中的值。我的代码正在运行,但我认为如果我使用 useReducer.Am 会更好吗?我更正了?我试图改变它,但我似乎无法让它工作......在文档中它说:
"useReducer is usually preferable to useState when you have complex
state logic that involves multiple sub-values or when the next state
depends on the previous one."
我想我应该使用它吧?
const [diametro, setDiametro] = useState(0);
const [total, setTotal] = useState("0");
useEffect(
() => setTotal(() => ((preco / 100) * diametro).toFixed(2).replace(".", ",")), [diametro]
);
我认为 useMemo
是适合您的情况的正确挂钩。基本上,你从 diametro
的当前值 'deriving' 得到 total
的值。这意味着 total
的值仅在 diametro
的值发生变化时发生变化。
代码将如下所示:
const [diametro, setDiametro] = useState(0);
const total = useMemo(() =>
((preco / 100) * diametro).toFixed(2).replace(".", ","),
[diametro]
);
一般来说,一个指导原则是将实际状态保持在最低限度,然后使用像 useMemo
这样的钩子来派生你需要的其他属性。请记住,将 return 多个属性作为一个对象从 useMemo
也是可以的,因此您可以仅通过一次 useMemo
调用来派生多个值。
我正在尝试更改 select 菜单中的值。我的代码正在运行,但我认为如果我使用 useReducer.Am 会更好吗?我更正了?我试图改变它,但我似乎无法让它工作......在文档中它说:
"useReducer is usually preferable to useState when you have complex state logic that involves multiple sub-values or when the next state depends on the previous one."
我想我应该使用它吧?
const [diametro, setDiametro] = useState(0);
const [total, setTotal] = useState("0");
useEffect(
() => setTotal(() => ((preco / 100) * diametro).toFixed(2).replace(".", ",")), [diametro]
);
我认为 useMemo
是适合您的情况的正确挂钩。基本上,你从 diametro
的当前值 'deriving' 得到 total
的值。这意味着 total
的值仅在 diametro
的值发生变化时发生变化。
代码将如下所示:
const [diametro, setDiametro] = useState(0);
const total = useMemo(() =>
((preco / 100) * diametro).toFixed(2).replace(".", ","),
[diametro]
);
一般来说,一个指导原则是将实际状态保持在最低限度,然后使用像 useMemo
这样的钩子来派生你需要的其他属性。请记住,将 return 多个属性作为一个对象从 useMemo
也是可以的,因此您可以仅通过一次 useMemo
调用来派生多个值。