杂谈
动态绑定函数
const hasEvents = mode === 'vertical' ? {
onMouseEvent: (e: React.MouseEvent) => { handelMouse(e, true) }
}
<div {...hasEvents} />
scss 的 each
$theme-colors:
(
"primary": $primary,
"secondary": $secondary,
...
..
.
)
@each $keys , $val in $theme-colors {
.icon-#{$key} {
color: $val
}
}
项目中修改copy时的颜色
一般我们copy时
颜色默认为蓝色
如果我们想要修改copy的颜色
应该怎么办呢
::selection {
background: rgb(238, 162, 164);
}
react 中使用@emotion css
不管用
import { useState } from 'react';
import { css, jsx, Global, ClassNames } from '@emotion/react';
<div
css={css`
padding: 32px;
background-color: hotpink;
font-size: 24px;
border-radius: 4px;
&:hover {
color: ${color};
}
`}
>
Hover to change color.
</div>
<div
css={css`
width: 130px;
height: 20px;
color: green;
`}
>
123
</div>
<Global
styles={{
body: {
margin: 0,
padding: 0,
background: 'red',
},
}}
/>
<ClassNames>
{({ css, cx }) => (
<div
className={cx(
'some-class',
css`
color: yellow;
background: aliceblue;
`,
)}
>
some-class
</div>
)}
</ClassNames>
相较以上方式,styled的用法似乎更好
import styled from "@emotion/styled";
const Pre = styled.pre`
text-align: left;
`;
<Pre>{ele[1]}</Pre>
参考资料:
https://blog.csdn.net/qq_21567385/article/details/111590431
interface 的只读
interface Person {
readonluy id : number;
name: string;
age?: number;
}
let franz : Person = {
id: 1,
name: 'franz'
}
franz.id = 2
泛型约束
const func<T extends string | number> = () => {}
func('1')
另类类型断言
function getLenth(input: string | number) : number {
if ((<string>input).length) {
return (<string>input).length
}
}
interface 新奇定义方式
interface Other {
(value: number) : number;
plus: (number: number[]) => number;
}
Other(1);
Other.plus([1, 2, 3]);
交叉类型
注意:
交叉类型不是交集
而是并集!
是把两个和为一个。
A & B
新版useDebounce
import { useState, useEffect } from 'react'
function useDebounce(value: any, delay = 300) {
const [debouncedValue, setDebouncedValue] = useState(value)
useEffect(() => {
const handler = window.setTimeout(() => {
setDebouncedValue(value)
}, delay)
return () => {
clearTimeout(handler)
}
}, [value, delay])
return debouncedValue
}
export default useDebounce;
const debouncedValue = useDebounce(inputValue, 300);
React.Children
props.children 的值有 三种可能
当前组件没有子节点, 它就是 undefined;
有一个节点,数据类型是object;
如果有多个子节点,数据类型是array;
因此处理 props.children时要小心。
React.Children.map(props.children, (child) => child)
非空判断符,单个变量使用
controlProps[valuePropName!] = value