React.lazy 和 suspense 如何使用?
React.lazy 可以让你延迟加载组件,只有在组件需要渲染时才会加载,这样可以提高应用的性能。它的用法是这样的:
javascript
import lazy from'react';
const LazyComponent = lazy(() => import('./MyComponent'));
function MyApp() {
return (
<div>
<LazyComponent />
</div>
);
}
export default MyApp;
而 Suspense 则是用于处理异步操作的,比如数据加载。它可以让你的应用在数据加载时显示一个占位符,等数据加载完成后再显示实际的内容。使用 Suspense 需要搭配useEffect和Promise来实现,比如:
javascript
import { Suspense } from'react';
function DataComponent() {
const [data, setData] = useState(null);
useEffect(() => {
const fetchData = async () => {
const response = await fetch('https://example.com/data');
const data = await response.json();
setData(data);
};
fetchData();
}, []);
if (!data) {
throw new Promise.reject();
}
return <div>{data}</div>;
}
function App() {
return (
<div>
<Suspense fallback={<div>Loading...</div>}>
<DataComponent />
</Suspense>
</div>
);
}
export default App;