這個導(dǎo)出是什么意思
export default DragDropContext(HTML5Backend)(
//這個connect函數(shù)起什么作用,為什么可以把APP寫在后面
connect(mapStateToProps, mapDispatchToProps, null, { pure: false })(App)
);
import * as React from 'react';
import { Route } from 'react-router-dom';
import { connect } from 'react-redux';
import { IRootState } from 'modules';
import { IntlProvider } from 'react-intl';
import { checkOnline, setLoading } from 'modules/engine/actions';
import platform from 'lib/platform';
import * as classnames from 'classnames';
import { AnimatedSwitch } from 'components/Animation';
import Splash from 'components/Splash';
import Main from 'containers/Main';
import Auth from 'containers/Auth';
import HTML5Backend from 'react-dnd-html5-backend';
import { DragDropContext } from 'react-dnd';
import InitHook from 'containers/App/InitHook';
import { switchWindow } from 'modules/gui/actions';
import ModalProvider from 'containers/Modal/ModalProvider';
interface IAppProps {
locale: string;
isAuthenticated: boolean;
isCollapsed: boolean;
isLoading: boolean;
isConnected: boolean;
isConnecting: boolean;
localeMessages: { [key: string]: string };
setLoading?: typeof setLoading;
checkOnline?: typeof checkOnline.started;
switchWindow?: typeof switchWindow.started;
}
class App extends React.Component<IAppProps> {
componentDidMount() {
if (!this.props.isConnecting && this.props.isLoading) {
this.props.checkOnline(null);
}
}
componentWillReceiveProps(props: IAppProps) {
if (this.props.isAuthenticated !== props.isAuthenticated) {
props.switchWindow(props.isAuthenticated ? 'main' : 'general');
}
if (null === this.props.isConnected && null !== props.isConnected) {
if (props.isConnected) {
props.setLoading(false);
}
else {
this.props.setLoading(false);
}
}
if (this.props.isAuthenticated !== props.isAuthenticated) {
this.props.setLoading(false);
}
}
render() {
const classes = classnames({
'wrapper': true,
'layout-fixed': true,
'aside-collapsed': this.props.isCollapsed,
'aside-toggled': !this.props.isCollapsed,
'platform-desktop': platform.select({ desktop: true }),
'platform-web': platform.select({ web: true }),
});
return (
<IntlProvider locale={this.props.locale} defaultLocale="en-US" messages={this.props.localeMessages}>
<div className={classes}>
<InitHook />
<ModalProvider />
<AnimatedSwitch animation={AnimatedSwitch.animations.fade()}>
{this.props.isLoading && (
<Route path="/" component={Splash} />
)}
{!this.props.isAuthenticated && (
<Route path="/" component={Auth} />
)}
<Route path="/" component={Main} />
</AnimatedSwitch>
</div>
</IntlProvider>
);
}
}
const mapStateToProps = (state: IRootState) => ({
locale: state.storage.locale,
localeMessages: state.engine.localeMessages,
isAuthenticated: state.auth.isAuthenticated,
isCollapsed: state.engine.isCollapsed,
isLoading: state.engine.isLoading,
isConnected: state.engine.isConnected,
isConnecting: state.engine.isConnecting
});
const mapDispatchToProps = {
setLoading,
checkOnline: checkOnline.started,
switchWindow: switchWindow.started
};
// export default connect(mapStateToProps, mapDispatchToProps, null, { pure: false })(App);
//這個導(dǎo)出是什么意思
export default DragDropContext(HTML5Backend)(
//這個connect函數(shù)起什么作用,為什么可以把APP寫在后面
connect(mapStateToProps, mapDispatchToProps, null, { pure: false })(App)
);connect 函數(shù)是個高階函數(shù),接受一些參數(shù),最后返回的是一個函數(shù),App在這里就是作為這個返回的函數(shù)的參數(shù)。具體可以看我的這篇文章,應(yīng)該有所幫助。https://segmentfault.com/a/11...
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達(dá)內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國制造2025”,實現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。