1. <></>
和 <Fragment></Fragment>
区别
前者是后者的语法糖,其实还不准确。二者还是有区别的,当有属性要加的时候只能是后者,当然属性只能是 key
。
<Fragment></Fragment>
使用场景,当需要用到 key
的时候,我能想到的唯一场景就是 map
里面,否则一律使用前者。
function Blog() {
return posts.map(post =>
<Fragment key={post.id}>
<PostTitle title={post.title} />
<PostBody body={post.body} />
</Fragment>
);
}
2. 如果需要让组件销毁后重建
取巧方式:使用 key
使用场景:比如 echart 的组件的曲线条数一旦渲染就只能固定,即使 setOptions 塞入了多条曲线的值。修复该问题一个取巧的办法是用组件的条数当做 key key={options.length}
。
3. 使用 ref 回调函数初始化 ref
你知道可以将一个函数传递给 ref 属性吗?
它的工作原理如下:
- 当 DOM 节点添加到屏幕时,React 会以 DOM 节点作为参数调用该函数。
- 当 DOM 节点被移除时,React 会以 null 调用该函数。
在下面的示例中,我们使用此技巧跳过 useEffect
const FocusInput = () => {
const ref = useCallback((node) => node?.focus(), []);
return <input ref={ref} type="text" />;
};
。
不好的写法:
使用 useEffect 当组件渲染完毕后聚焦输入框。
const FocusInput = () => {
const ref = useRef<HTMLInputElement>();
useEffect(() => {
ref.current?.focus();
}, []);
return <input ref={ref} type="text" />;
};
推荐写法:
在输入框可用时立即聚焦,减少 useEffect
的使用。
此条来自 一些react使用小技巧(上)。
公众号『
前端77
』