# Link的viewTransition属性
可以给Link、NavLink、Form属性添加viewTransition属性,以添加路由切换时的过渡动画。
This automatically wraps the navigation update in document.startViewTransition()
更多内容详见:https://reactrouter.com/how-to/view-transitions#basic-view-transition
# Await和loader的并发渲染
# 移除defer
原来的loader
return defer({ number, name, data, abortController })
1
改成
return { number, name, data, abortController }
1
配合React19的 use 使用
使用Await
<Suspense fallback={<Loading />}>
<Await resolve={number} errorElement={<GlobalLoading />}>
{(data) => {
console.log('render number')
return (
<div style={{ color: 'red' }}>
<h3>Number: {data}</h3>
</div>
)
}}
</Await>
</Suspense>
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
使用use
const NumberComponent = useCallback(() => {
const resolvedNumber = use(number)
console.log('render number')
return (
<div style={{ color: 'red' }}>
<h3>Number: {resolvedNumber}</h3>
</div>
)
}, [number])
return (
<Suspense fallback={<Loading />}>
<NumberComponent />
</Suspense>
)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# lazy
原来懒加载一个组件:
const About1 = React.lazy(() => import('../pages/About/About1.tsx'))
const routes = [
{
path: 'about1',
element: <About1 />,
errorElement: <Error />
},
]
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
使用Route.lazy后
const routes = [
{
path: 'about1',
lazy: async () => {
const About1 = await import('../pages/About/About1.tsx')
return { Component: About1.default }
},
errorElement: <Error />
},
]
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
Route.lazy更加灵活,还可以添加loader数据等
lazy: async () => {
const { Dashboard } = await import("./Dashboard");
const data = await fetchDashboardData(); // 你可以加载数据或执行其他逻辑
return {
Component: Dashboard,
loaderData: data,
};
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
← Electron安装 Web端操作摄像头 →