【发布时间】:2021-09-03 07:51:14
【问题描述】:
我想将前一个值存储在一个变量中并在一个函数中使用它。假设如果当前值为 9,则 之前的值应该为 8(少一个) .问题是console.log(prevServings) 在第一次渲染时返回 undefined 并在第二次渲染时显示之前的值,但是 当前值和之前的值之间的差异是 2 而不是 1。我的理解是当前值在第一次渲染时不可用,因此先前的值未定义,但我不知道如何修复它。任何帮助,将不胜感激。提前致谢。
const Child = ({originalData}) =>{
//clone original data object with useState
const [copyData, setCopyDta] = useState({});
//clone the copied data
let duplicate = {...copyRecipe};
//store previous servings value into a variable
const usePrevious = (servings) => {
const ref = useRef();
useEffect(() => {
ref.current = servings;
}, [servings]);
return ref.current;
};
const prevServings = usePrevious(duplicate.servings);
//increase the number of servings on click
const incrementHandle = () => {
duplicate.servings = `${parseInt(duplicate.servings) + 1}`;
//this return undefined on the first render
console.log(prevServings);
setCopyRecipe(duplicate);
}
return(
<p>{copyData.servings}</p>
<Increment onClick={incrementHandle}/>
)
}
【问题讨论】:
标签: reactjs api react-hooks use-ref