[英]spinner for each component in react
What is the best practice and efficient way for implement spinner component for whole apps ?为整个应用程序实现微调组件的最佳实践和有效方法是什么?
My sample code :我的示例代码:
render() {
if (this.state.loading)
return (
<Spinner/>
)
return (
<div className="container">
)
}
i want avoid to rewrite the same logic checking loading state for each component.我想避免为每个组件重写相同的逻辑检查加载状态。 TIA.
TIA。
Simply apply a ternary:只需应用三元:
render() {
return this.state.loading ? <Spinner/> : <App />
}
And make it a function:并使其成为一个函数:
loader.js加载器.js
import Spinner from './spinner.js';
export default function LoadManager = ({loading}) => props.loading ? <Spinner /> : props.children;
So in your components所以在你的组件中
render() {
return
<LoadManager loading={this.state.loading}>
<App />
</LoadManager>
}
Other more common ways involves use of React Loadable:其他更常见的方法涉及使用 React Loadable:
import Loadable from 'react-loadable';
import Loading from './my-loading-component';
const LoadableComponent = Loadable({
loader: () => import('./my-component'),
loading: Loading,
});
export default class App extends React.Component {
render() {
return <LoadableComponent/>;
}
This is more efficient too, has the code will be splitted.这也更有效,因为代码将被拆分。
make a utils folder and make a file (sppiner.js) in that file and write this code创建一个 utils 文件夹并在该文件中创建一个文件 (spiner.js) 并编写此代码
spinner.js
微调器.js
export default function spinner({text}) {
return (
<div>
<Spinner/>
<span>{text}</span>
</div>
)
and after that in each component that you want use spinner write this code然后在你想要使用微调器的每个组件中编写此代码
import Spinner from "utils/spinner";
return(
...
{this.state.loading && <Spinner text={"your text..."} />}
...
)
What about adding this kind of function?添加这种功能怎么样?
function renderSpinner() {
return this.state.loading && <Spinner />
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.