JS-何时声明可选参数



想象一下这个方法:

export default function useListenDeletedChatMessages(
chatRoomId = undefined,
{
onNext = undefined,
onError = undefined,
} = {}
) {
const { modifyMessage } = useMessages();
const startAt = useRef(new Date());
useEffect(() => {
if (!chatRoomId) return; <-------- !!!!!
// Listen for new deleted messages
const deletedMessagesListener = listenDeletedChatMessages(
chatRoomId,
startAt.current,
modifyMessage,
onNext,
onError
);
// eslint-disable-next-line consistent-return
return () => {
deletedMessagesListener();
};
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [chatRoomId]);
}

正如你所看到的,我正在声明参数";聊天室Id";作为可选,因为如果没有此参数(不监听聊天消息(,该方法仍然可以工作。

我决定在REACT HOOK中将该参数设置为未定义,因为在我的UI中,乍一看,它是未定义的,直到我的组件装载后执行异步查询。

你可以考虑做一些类似的事情:

if (chatRoomId) {
useListenDeletedChatMessages(chatRoomId);
}

但是,在React中,钩子不能封装在条件语句中。

所以,我的问题是:

我们什么时候应该使用可选参数?因为,对我来说,像这样的东西

function listenChatRoom(roomId = undefined) {}

就像对程序员说,他可以监听一个id是可选的房间(在我的系统中,一个房间总是有一个唯一的id(,我的意思是,这根本没有意义。

有经验法则吗?

如果您有多个组件和挂钩依赖于这个房间id,那么在您有id之前,最好不要首先安装它们。然后他们可以假设id总是定义好的,不必执行所有这些奇怪的检查。

最新更新