以下是一个示例代码,展示了如何避免直接修改属性,而是通过回调函数来更新属性值:
import React, { useState } from 'react';
const ParentComponent = () => {
const [count, setCount] = useState(0);
const handleCountChange = (newCount) => {
setCount(newCount);
};
return (
);
};
const ChildComponent = ({ count, onUpdateCount }) => {
const handleClick = () => {
const newCount = count + 1;
onUpdateCount(newCount);
};
return (
Count: {count}
);
};
export default ParentComponent;
在这个例子中,父组件ParentComponent
包含一个状态count
和一个回调函数handleCountChange
,用来更新count
的值。父组件将count
和handleCountChange
作为属性传递给子组件ChildComponent
。
子组件ChildComponent
展示了count
的值,并在按钮点击时调用handleClick
函数。handleClick
函数通过增加count
的值,并调用父组件传递的onUpdateCount
回调函数来更新count
的值。这样,每当父组件重新渲染时,count
的值不会被覆盖,因为它是通过回调函数来更新的。