1
我的反應網絡應用程序有一個頁面組件。頁面組件爲子組件執行異步調用。現在我必須在每一頁上都這樣反應 - 在每個組件上加載組件
export default class Page extends React.Component {
constructor(props) {
super(props);
this.state = {
loading: true
}
}
componentWillMount = async() => {
// ... do calls
this.setState({
loading: false
})
}
render() {
if (this.state.loading) {
return <Loading/>
} else {
return (
// Some other components that needs the information from the calls
)
}
}
}
有沒有辦法減少樣板?我正在考慮高級組件的反應。我想可能是一個組件,它將獲得需要創建的調用的函數以及在該函數之後呈現的組件。
const loader = (calls) => (WrappedComponent) => {
return class Loader extends React.Component {
constructor (props) {
super(props);
this.state = {
loading: true
}
}
componentWillMount =() => {
// execute calls function
};
render() {
return this.state.loading ? <Loading/> : <WrappedComponent {... this.props }/>
}
}
};
export default loader;
但我還沒有想出一種方法將調用函數傳遞給加載函數。
謝謝,我會試試看。沒有想到一個HOC是如此簡單。 – oscarteg