我想在一个组件中重用函数resolveSessionData()。它用于在属性更改和用户操作中设置一些状态。这是重用该功能的正确方法吗?或者在React中是否有更好的方法?
const { useEffect, useState } = require("react");
const Component = ({someProp}) => {
const [itemData, setItemData] = useState(null);
useEffect(() => {
if (someProp) {
resolveSessionData();
}
}, [someProp]);
const resolveSessionData = () => {
const data = database.getItemData();
setItemData(data);
};
return <div>
{/* show item data */}
<button onClick={resolveSessionData}>
Activate Lasers
</button>
</div>;
};
3条答案
按热度按时间ma8fv8wu1#
是的,这是正确的方法。在React中没有更好的方法。
s3fp2yjn2#
您做得很好,但是如果您在
resolveSessionData
中引入了任何状态值,请使用useCallback
版本(注解代码)ndh0cuux3#
为了重用useEffect和其他函数的功能,这里您可以使用自定义钩子,并在自定义钩子中覆盖公共功能,然后在需要的组件中重用**。
例如