React类组件可以利用自定义钩子接受一个参数吗?



我知道如何在类组件中使用钩子的一种方法是有一个返回功能组件的HOC,在其中我们可以调用钩子并将prop传递给类组件。看看我如何在React经典的"类"组件中使用React钩子?和Joel Cox的回答

现在回到问题,以https://reactjs.org/docs/hooks-custom.html#using-a-custom-hook中的例子为例,考虑我们有一个钩子useFriendStatus,它接受一个frienddid,并订阅该朋友的在线状态,并在每次重新渲染时进行清理,因此对于一个新的frienddid,该钩子可以订阅新的frienddid。

function useFriendStatus(friendID) {
const [isOnline, setIsOnline] = useState(null);
// Effect to subscribe to online status of friendID and unsubscribe on re-render
return isOnline;
}

类组件可以使用这样的钩子吗?在HOC模式中,我们利用了钩子的挂载周期。我们能在React类组件中重新渲染钩子吗?

你真的不应该在class组件中使用你的钩子(当然也不应该在componentDidMount生命周期方法中使用——很可能会抛出错误),但是你也不能在功能组件的useEffect中使用你的自定义钩子(如果你尝试的话,会抛出一个React错误)…创建的部分目的/实用程序更大,以便您可以从其他组件中抽象出数据获取或其他异步调用。

(如果有必要,这些组件仍然可以有其他useEffects,但不应该包含自定义Hooks)

最新更新