-
-
Notifications
You must be signed in to change notification settings - Fork 9.8k
Description
https://twitter.com/jaredpalmer/status/1298332787792109570
With the new theme validation/normalization, default values are applied ahead of time.
We should cleanup every piece of code that defines default/fallback values in the views unnecessarily because we don't want these fallback values to be duplicated everywhere, and it pollutes the code uselessly.
const {
siteConfig: {
themeConfig: { announcementBar: { id = "annoucement-bar" } = {} } = {}
} = {}
} = useDocusaurusContext();Here, we know that there's always a siteConfig, a themeConfig, and maybe an announcement bar, so it's not necessary to use = {} each time.
Also, we should strive to have proper TypeScript support. It is possible to have no announcementBar config, but I don't think we should destructure that config, falling back to {} just to ensure a runtime error.
In such case, the correct code should rather be:
const { announcementBar } = useDocusaurusContext().siteConfig.themeConfig;
if (announcementBar) {
const {id,content} = announcementBar;
}This announcementBar case has been fixed with #3338
But there are many other places where such cleanup should be done.
I suggest we should also:
- Add more config normalization tests (as Joi is not always so idiomatic)
- Add a
useThemeConfighook to reduce a bit boilerplate
