Open12
ts・react関連のメモ
レスポンシブ
import * as React from 'react'
import { useMediaQuery } from 'react-responsive'
export const isPc = () => useMediaQuery({ query: '(min-width: 901px)' })
export const isSp = () => useMediaQuery({ query: '(max-width: 900px)' })
interface Props {
pc?: React.ReactNode
sp?: React.ReactNode
}
export const Responsive: React.VFC<Props> = ({ pc, sp }) => {
const matchPc = isPc()
const matchSp = isSp()
return (
<>
{matchPc && <>{pc}</>}
{matchSp && <>{sp}</>}
</>
)
}
export const sp = 900
export const spStyle = `@media (max-width: ${sp}px)`
const Content = styled('div')`
width: 860px;
${spStyle} {
width: 100%;
}
`
form
const submit = (e: React.FormEvent<HTMLFormElement>) => {
e.preventDefault()
}
import Button from './Button';
type Props = React.ComponentProps<typeof Button>
const { labelText, ...inputProps } = props
ワイ「↑こう、分割代入と残余構文を使うことで」
@storybook/testing-library
で指定テキストが存在するかのテスト
expect(canvas.getByText(/*/)).toBeInTheDocument()
expect(canvas.queryByText(/*/)).not.toBeInTheDocument()
可変長引数
(...args: unknown[]) => void
不要なts検出
npx ts-unused-exports tsconfig.json | grep -v "pages" | grep -v "story"