From 047fc0c775f375b0f96957ca117d1738bfd899d6 Mon Sep 17 00:00:00 2001 From: DefectingCat Date: Fri, 12 Aug 2022 11:01:18 +0800 Subject: [PATCH] Add new post add new code sandbox component --- .../Untitled-1.png | Bin 0 -> 15272 bytes .../Untitled-2.png | Bin 0 -> 12554 bytes .../Untitled-3.png | Bin 0 -> 14046 bytes .../Untitled-4.png | Bin 0 -> 13706 bytes .../Untitled-5.png | Bin 0 -> 24286 bytes .../Untitled.png | Bin 0 -> 25643 bytes components/DarkModeBtn.tsx | 7 +- components/RUA/RUACodeSandbox.tsx | 72 ++++ components/post/PostTOC.module.css | 3 - components/post/PostTOC.tsx | 64 ---- components/post/SlideToc.tsx | 6 +- lib/hooks/useMounted.tsx | 12 + .../hook-form-basic/App.ts | 44 +++ .../index.mdx | 338 ++++++++++++++++++ .../react-generic/App.ts | 22 ++ .../react-generic/Child.ts | 27 ++ 16 files changed, 520 insertions(+), 75 deletions(-) create mode 100644 assets/images/p/generic-component-encapsulate-reusable-component/Untitled-1.png create mode 100644 assets/images/p/generic-component-encapsulate-reusable-component/Untitled-2.png create mode 100644 assets/images/p/generic-component-encapsulate-reusable-component/Untitled-3.png create mode 100644 assets/images/p/generic-component-encapsulate-reusable-component/Untitled-4.png create mode 100644 assets/images/p/generic-component-encapsulate-reusable-component/Untitled-5.png create mode 100644 assets/images/p/generic-component-encapsulate-reusable-component/Untitled.png create mode 100644 components/RUA/RUACodeSandbox.tsx delete mode 100644 components/post/PostTOC.module.css delete mode 100644 components/post/PostTOC.tsx create mode 100644 lib/hooks/useMounted.tsx create mode 100644 pages/p/generic-component-encapsulate-reusable-component/hook-form-basic/App.ts create mode 100644 pages/p/generic-component-encapsulate-reusable-component/index.mdx create mode 100644 pages/p/generic-component-encapsulate-reusable-component/react-generic/App.ts create mode 100644 pages/p/generic-component-encapsulate-reusable-component/react-generic/Child.ts diff --git a/assets/images/p/generic-component-encapsulate-reusable-component/Untitled-1.png b/assets/images/p/generic-component-encapsulate-reusable-component/Untitled-1.png new file mode 100644 index 0000000000000000000000000000000000000000..551f8c40ac6c6484a39591dbd6dc2d06abcea087 GIT binary patch literal 15272 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 W|EUSY5B@(6fVVO#(lwICpZ*U;)RBAu literal 0 HcmV?d00001 diff --git a/assets/images/p/generic-component-encapsulate-reusable-component/Untitled-3.png b/assets/images/p/generic-component-encapsulate-reusable-component/Untitled-3.png new file mode 100644 index 0000000000000000000000000000000000000000..9914957fbd3e1983492c79acc4e7e61101e533f2 GIT binary patch literal 14046 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 ZYSM^vZkrXjdT$Ny)pHg3;-`iI{|_$D1v~%% literal 0 HcmV?d00001 diff --git a/assets/images/p/generic-component-encapsulate-reusable-component/Untitled-4.png b/assets/images/p/generic-component-encapsulate-reusable-component/Untitled-4.png new file mode 100644 index 0000000000000000000000000000000000000000..9de5d25b7c0aafb29f4fdd6b5d2c507736716a08 GIT binary patch literal 13706 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 literal 0 HcmV?d00001 diff --git a/assets/images/p/generic-component-encapsulate-reusable-component/Untitled-5.png b/assets/images/p/generic-component-encapsulate-reusable-component/Untitled-5.png new file mode 100644 index 0000000000000000000000000000000000000000..0e515dc449b4c4eb08da4310f67f17da53120f4f GIT binary patch literal 24286 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 ay5-AIT#ESq91Qr@gKn#7sTN*`1pW`gFrsJx literal 0 HcmV?d00001 diff --git a/assets/images/p/generic-component-encapsulate-reusable-component/Untitled.png b/assets/images/p/generic-component-encapsulate-reusable-component/Untitled.png new file mode 100644 index 0000000000000000000000000000000000000000..e84c1a9287619918c6d8cd07ca0b263175327a6d GIT binary patch literal 25643 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 literal 0 HcmV?d00001 diff --git a/components/DarkModeBtn.tsx b/components/DarkModeBtn.tsx index 42db2cc..852fffb 100644 --- a/components/DarkModeBtn.tsx +++ b/components/DarkModeBtn.tsx @@ -1,14 +1,11 @@ import classNames from 'classnames'; +import useMounted from 'lib/hooks/useMounted'; import { useTheme } from 'next-themes'; -import { useEffect, useState } from 'react'; import { FiMoon, FiSun } from 'react-icons/fi'; const DarkModeBtn = () => { - const [mounted, setMounted] = useState(false); + const { mounted } = useMounted(); const { systemTheme, theme, setTheme } = useTheme(); - // When mounted on client, now we can show the UI - useEffect(() => setMounted(true), []); - const currentTheme = theme === 'system' ? systemTheme : theme; if (!mounted) diff --git a/components/RUA/RUACodeSandbox.tsx b/components/RUA/RUACodeSandbox.tsx new file mode 100644 index 0000000..61591fe --- /dev/null +++ b/components/RUA/RUACodeSandbox.tsx @@ -0,0 +1,72 @@ +import classNames from 'classnames'; +import useInView from 'lib/hooks/useInView'; +import { useTheme } from 'next-themes'; +import { useCallback, useEffect, useRef, useState } from 'react'; +import RUALoading from './loading/RUALoading'; + +const partten = + /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/; +const commonClass = classNames( + 'rounded-lg h-[500px] border-0', + 'overflow-hidden w-full' +); + +type Props = { + url: string; +}; + +const RUACodeSandbox = ({ url }: Props) => { + const isUrl = partten.test(url); + const { systemTheme, theme } = useTheme(); + const currentTheme = theme === 'system' ? systemTheme : theme ?? 'light'; + + const { ref, inView } = useInView(); + const sandUrl = new URL(url); + const embed = sandUrl.pathname.split('/')[2]; + const [src, setSrc] = useState(''); + useEffect(() => { + inView && + setSrc( + `https://codesandbox.io/embed/${embed}?fontsize=14&hidenavigation=1&theme=${currentTheme}&view=preview` + ); + }, [currentTheme, embed, inView]); + + const [load, setLoad] = useState(false); + const handleLoad = useCallback(() => { + setLoad(true); + }, []); + + if (!isUrl) return null; + + return ( + <> +
+
+ +
+ + +
+ + ); +}; + +export default RUACodeSandbox; diff --git a/components/post/PostTOC.module.css b/components/post/PostTOC.module.css deleted file mode 100644 index 36f0d0f..0000000 --- a/components/post/PostTOC.module.css +++ /dev/null @@ -1,3 +0,0 @@ -.head:hover:before { - content: unset !important; -} diff --git a/components/post/PostTOC.tsx b/components/post/PostTOC.tsx deleted file mode 100644 index 00b2176..0000000 --- a/components/post/PostTOC.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import { getHeadings } from 'lib/utils'; -import Anchor from 'components/mdx/Anchor'; -import styles from './PostTOC.module.css'; -import classNames from 'classnames'; -import { useCallback, useState } from 'react'; -import { FiChevronDown } from 'react-icons/fi'; - -interface Props { - headings: ReturnType; -} - -const PostTOC = ({ headings }: Props) => { - const [show, setShow] = useState(false); - const handleClick = useCallback(() => setShow((show) => !show), []); - - return ( - <> -
-

- What's inside? - - -

- -
    - {headings?.map((h) => ( -
  • - - {h.text} - -
  • - ))} -
-
- - ); -}; - -export default PostTOC; diff --git a/components/post/SlideToc.tsx b/components/post/SlideToc.tsx index 5792339..846870f 100644 --- a/components/post/SlideToc.tsx +++ b/components/post/SlideToc.tsx @@ -1,9 +1,9 @@ -import { useEffect, useState } from 'react'; +import useMounted from 'lib/hooks/useMounted'; +import { useEffect } from 'react'; import tocbot from 'tocbot'; const SlideToc = () => { - const [mounted, setMounted] = useState(false); - useEffect(() => setMounted(true), []); + const { mounted } = useMounted(); useEffect(() => { // Waiting the right time. diff --git a/lib/hooks/useMounted.tsx b/lib/hooks/useMounted.tsx new file mode 100644 index 0000000..cc0036f --- /dev/null +++ b/lib/hooks/useMounted.tsx @@ -0,0 +1,12 @@ +import { useState, useEffect } from 'react'; + +const useMounted = () => { + const [mounted, setMounted] = useState(false); + useEffect(() => setMounted(true), []); + + return { + mounted, + }; +}; + +export default useMounted; diff --git a/pages/p/generic-component-encapsulate-reusable-component/hook-form-basic/App.ts b/pages/p/generic-component-encapsulate-reusable-component/hook-form-basic/App.ts new file mode 100644 index 0000000..e6246a8 --- /dev/null +++ b/pages/p/generic-component-encapsulate-reusable-component/hook-form-basic/App.ts @@ -0,0 +1,44 @@ +const app = `import { useForm } from 'react-hook-form'; + +type Pet = 'Cat' | 'Dog'; +type FormData = { + firstName: string; + lastName: string; + favorite: Pet; +}; + +export default function App() { + const { + register, + handleSubmit, + formState: { errors }, + } = useForm(); + const onSubmit = handleSubmit((data) => console.log(data)); + + return ( +
+
+
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+
+ ); +}`; +export default app; diff --git a/pages/p/generic-component-encapsulate-reusable-component/index.mdx b/pages/p/generic-component-encapsulate-reusable-component/index.mdx new file mode 100644 index 0000000..6a7459f --- /dev/null +++ b/pages/p/generic-component-encapsulate-reusable-component/index.mdx @@ -0,0 +1,338 @@ +--- +title: 组件泛型实例-封装可复用的表单组件 +date: '2022-08-12' +tags: [TypeScript, React] +--- + +export const meta = { + title: '组件泛型实例-封装可复用的表单组件', + date: '2022-08-12', + tags: ['TypeScript', 'React'], +}; + +import Layout from 'layouts/MDXLayout'; +import dynamic from 'next/dynamic'; +import Image from 'components/mdx/Image'; +import image0 from 'assets/images/p/generic-component-encapsulate-reusable-component/Untitled.png'; +import image1 from 'assets/images/p/generic-component-encapsulate-reusable-component/Untitled.png'; +import image2 from 'assets/images/p/generic-component-encapsulate-reusable-component/Untitled.png'; +import image3 from 'assets/images/p/generic-component-encapsulate-reusable-component/Untitled.png'; +import image4 from 'assets/images/p/generic-component-encapsulate-reusable-component/Untitled.png'; +import image5 from 'assets/images/p/generic-component-encapsulate-reusable-component/Untitled.png'; +import app from './hook-form-basic/App.ts'; +import app2 from './react-generic/App.ts'; +import child from './react-generic/Child.ts'; + +export const RUASandpack = dynamic(() => import('components/RUA/RUASandpack')); +export const RUACodeSandbox = dynamic(() => + import('components/RUA/RUACodeSandbox') +); + +export default ({ children }) => {children}; + +当前很多 UI 库都会为我们集成可复用的 Form 组件,并且是开箱即用。但有时候我们往往可能需要为自己的组件集成 Form。单纯的手动管理所有的状态可能不是件理想的活,尤其是表单验证。 + +[React Hook Forms](https://react-hook-form.com/) 为我们提供了完善的状态管理,并且可以集成到任何组件中去。 + +你可能会问,如今已经有了像是 MUI、Ant Design 等此类优秀的组件库,为什么还需要使用 React Hook Forms 来管理表单。 + +[MUI: The React component library you always wanted](https://mui.com/zh/) + +虽然一些优秀的成熟组件库会为我们提供良好的表单解决方案,但它终究需要与组件库一起使用。而并非只是提供表单的状态管理,并没有完全的与组件库解耦合。 + +同时,当我们使用诸如 [Daisyui](https://daisyui.com/) 等此类的 CSS 组件时,它们是与状态完全解耦合的。我们需要自己为其维护状态。 + +## Hook our form + +对于一个表单来说,提供的表单项越多,所需要的状态管理就越繁琐。不仅仅是状态管理,后续的表单验证才是一个表单的核心所在。 + +React Hook Forms 对 TypeScript 支持良好,有了 TypeScript 我们就可以在开发时验证表单类型。而表单的数据类型也是后续封装通用组件较为繁琐的一个地方。 + + + +React Hook Forms 在使用方面,使用了一个 `register` 函数代替了我们为每个表单项管理状态的步骤。从写法上就可以看出,这个函数返回了我们的表单所需要的属性,以及其状态。 + +```tsx + +``` + +在表单提交方面,`handleSubmit` 方法接受一个回调,其参数就是表单输入后的状态。 + +```tsx +const onSubmit = handleSubmit((data) => console.log(data)); +``` + +表单验证通过后,就可以成功调用这个函数,以实现我们的表单提交。 + +这是一段最基础的用法,没有表单验证提示,仅仅只是接受任何用户输入的数据。并且同样的组件也没有实现复用。 + +## Input 组件 + +封装一个可复用的 `Input` 组件可能是再简单不过的事情了,对于其参数类型,主要部分还是来自于 `HTMLInput` 。我们只需要个别定义的属性,再利用剩余参数将其全部赋值给真正的 `input` + +```tsx +export type FormInputProps = { + label?: string | undefined; +} & DetailedHTMLProps, HTMLInputElement>; +``` + +```tsx +const Input = ({ name, label, ...rest }: FormInputProps) => { + return ( + <> + + + + + + + ); +}; +``` + +用起来自然也是和常见的组件一样方便: + +```tsx +
+ +
+ +
+ +
+``` + +但是如果仅仅只是这样,我们的组件还不能与 React Hook Forms 一起工作。因为其核心部分 `register` 函数还无法传递给我们的 `Input` 组件。也就是说我们的组件现在还是不可控的,这时候再尝试提交就会发现无法获取其状态。 + +无法获取其状态 + +当然我们不能简单的将 `register` 函数塞给 `Input` 组件,因为它还没有合适的签名。`register` 函数会根据表单的数据签名和不同的表单项来实现自己的签名。 + +从 `register` 函数的签名中就可以看出,它接受一个泛型,该泛型就是对应的表单项类型。 + +```tsx +register: <"firstName">(name: "firstName", options?: ...) +``` + +也就是 `FormData` 中的 `firstName` : + +```tsx +type FormData = { + firstName: string; + lastName: string; + favorite: Pet; +}; +``` + +没错,要想正确的给组件中的 `register` 函数签名,我们就得给我们的函数式组件上个泛型。 + +## 泛型 + +在考虑给组件添加一个泛型之前,需要先简单的了解下泛型是如何工作的。 + +一个函数的泛型可以非常的简单,它代表了一个任意的类型值(当然也可以对其进行约束)。并根据指定的参数为泛型时,自动推断该类型值。 + +```ts +const logAndReturn = (target: T) => { + console.log(target); + return target; +}; + +// const logAndReturn: <42>(target: 42) => 42 +logAndReturn(42); +// const logAndReturn: <"42">(target: "42") => "42" +logAndReturn('42'); +``` + +### 类型别名中的泛型 + +类型别名中的泛型与函数不同的是,它需要手动传递一个函数的泛型值(或来自其他地方的泛型),并根据该泛型来决定其值。并且如果泛型有约束的话,还需要符合其约束。 + +例如,我们有一个描述个人的类型别名: + +```ts +type Person = { + name: string; + age: number; + favorite: T; +}; +``` + +而我们需要编写一个函数,根据其 `favorite` 来决定打印的值。函数大概长这样: + +```tsx +const sayIt = (p: Person) => { + const type = typeof p.favorite; + switch (type) { + case 'string': + console.log(`My favorite word is: ${p.favorite}`); + return; + case 'number': + console.log(`My favorite number is: ${p.favorite}`); + return; + } +}; +``` + +当指定参数为 `p: Person` 时,就需要将函数的泛型传递给类型别名。且类型别名中的泛型约束在了 `` 之间,函数必须保证使其子类型。否则就会提示无法满足其类型。 + +未约束的泛型 + +和参数类型,泛型也是向下兼容的,只要保证其类型是子类型即可。也就是说这样也是可以的 `const sayIt = (p: Person) => {}` 。数字 42 是 `number` 类型的子类型。 + +随后在调用函数时,就能发现泛型给我们带来的作用了。 + +传递数字给泛型 + +传递字符串给泛型 + +### React 中的泛型 + +我们的 React 函数组件也是一个函数,对于泛型的规则同样适用。 + +来看一个简单的小组件,该组件可以以一个常见的对象类型 `Record` 来根据指定的 key 访问其值,并展示在 DOM 上。 + + + +例如,这样的一个值: + +```tsx +const testData = { + firstName: 'xfy', + lastName: 'xfyxfy', +}; +``` + +当传递其对应的 key 时,我们的子组件就会展示对应的属性。也就是 `data[key]` ,这是再简单不过的一个属性访问方式了。 + +```tsx + +``` + +但不仅如此,我们还希望我们的子组件能够根据已经存在的值,推断出我们能够传递的 key。 + +类型推断 + +这正是泛型的作用。 + +首先,我们子组件的参数签名必然需要一个泛型。并且我们将泛型约束在为一个常见的对象 `Record`,且不在乎属性值具体是什么类型(unknown)。 + +```tsx +type Props> = { + name: keyof T; + data: T; +}; +``` + +这便是我们组件的参数具体的签名。还记得上述类型别名需要将函数的泛型传递给它吗?接下来就是要给函数式组件添加一个泛型,并将其传递给 `Props` 。 + +我们的组件也是一个标准的函数,所以接下来就简单多了。只需要将泛型正确的约束,并传递给别名即可。 + +```tsx +const Child = >({ + name, + data, +}: Props) => {}; +``` + +```tsx +const Child = >({ name, data }: Props) => { + const [showName, setShowName] = useState(); + const valid = () => { + console.log(data[name]); + setShowName(data[name]); + }; + + return ( + <> +
{name}
+ + +
{JSON.stringify(showName)}
+ + ); +}; +``` + +## 带有泛型的 Input 组件 + +`register` 函数对表单项的验证与上述较为类似,它也会根据表单项的 key 来决定传递对应的 name。为了满足 `register` 函数,可复用的 Input 组件就得需要一个泛型,用来接受不同的表单数据类型。 + +React hook forms 为我们提前准备好了适用于 `register` 函数的类型别名 `UseFormRegister` ,它会接受一个泛型,该泛型就是我们的表单数据类型。 + +所以 `register` 函数的签名看起来就像这样 `register?: UseFormRegister;` 这里的 `T` 就是我们的表单类型。但是我们还不知道传入当前组件中的表单类型是什么,所以我们的组件参数签名也需要一个泛型。 + +所以这里我们的组件参数看起来是这样的: + +```tsx +export type FormInputProps = { + name: Path; + label?: string | undefined; + rules?: RegisterOptions; + register?: UseFormRegister; +} & DetailedHTMLProps, HTMLInputElement>; +``` + +值得注意的是,这里给 `input` 使用的 name 属性。因为 `register` 函数注册时使用的名称需要确保为表单类型的中的一个。所以这里需要使用 React hook forms 导出的 `Path` 类型,以配合 `register` 函数。 + +这里就和上述泛型组件很相似了,接下来要做的就是将组件的泛型传递给参数签名: + +```tsx +const Input = >({ + name, + label, + ...rest +}: FormInputProps) => {}; +``` + +这里给组件的泛型小小的约束一下,我们希望传递过来的表单类型是一个普通的对象结构 `>` 。 + +不仅如此,还不能忘了 `register` 函数还需要注册在 DOM 上。 + +```tsx + +``` + +得益于泛型的功劳,我们将 `register` 函数传递给 `Input` 组件时,我们的组件就知道了这次表单的类型。并且确定了 `name` 属性的类型。 + +类型推断 + +这是因为 `register` 函数本身的签名:`const register: UseFormRegister` 。这才使得我们的组件成功接受到了泛型。 + +再添加一些 `rules` 以及验证未通过时的提示,这样一个可复用的 React hook form 组件就封装好了。 + +```tsx + +``` + + diff --git a/pages/p/generic-component-encapsulate-reusable-component/react-generic/App.ts b/pages/p/generic-component-encapsulate-reusable-component/react-generic/App.ts new file mode 100644 index 0000000..4224cbe --- /dev/null +++ b/pages/p/generic-component-encapsulate-reusable-component/react-generic/App.ts @@ -0,0 +1,22 @@ +const app = `import "./styles.css"; +import Child from "./Child"; + +const testData = { + name: "xfy", + age: 18 +}; + +export default function App() { + return ( +
+

Hello CodeSandbox

+

Start editing to see some magic happen!

+ +
+ +
+
+ ); +}`; + +export default app; diff --git a/pages/p/generic-component-encapsulate-reusable-component/react-generic/Child.ts b/pages/p/generic-component-encapsulate-reusable-component/react-generic/Child.ts new file mode 100644 index 0000000..0e3de8a --- /dev/null +++ b/pages/p/generic-component-encapsulate-reusable-component/react-generic/Child.ts @@ -0,0 +1,27 @@ +const child = `import { useState } from "react"; + +type Props> = { + name: keyof T; + data: T; +}; + +const Child = >({ name, data }: Props) => { + const [showName, setShowName] = useState(); + const valid = () => { + console.log(data[name]); + setShowName(data[name]); + }; + + return ( + <> +
{name}
+ + +
{JSON.stringify(showName)}
+ + ); +}; + +export default Child;`; + +export default child;