https://github.com/pmg1989/dva-admin/blob/master/src/index.js
import dva from 'dva';
import { browserHistory } from 'dva/router';
import createLoading from 'dva-loading';
import { message } from 'antd';
import './index.html';
import './index.css';
// 3 秒
const ERROR_MSG_DURATION = 3;
// 1. Initialize
const app = dva({
history: browserHistory,
onError(e) {
message.error(e.message, ERROR_MSG_DURATION);
console.error("app onError -- ", error);
}
});
// 2. Plugins
app.use(createLoading());
// 3. Model
// Moved to router.js
// app.model(require('./models/users'))
// 4. Router for browserHistory
app.router(require('./router'));
// 5. Start
app.start('#root');
react events & forms
https://facebook.github.io/react/docs/events.html#form-events
https://facebook.github.io/react/docs/forms.html
ES6
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Object_initializer#Computed_property_names
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Object_initializer#计算的属性名
state-updates-are-merged
https://facebook.github.io/react/docs/state-and-lifecycle.html#state-updates-are-merged
Uncontrolled Components
https://facebook.github.io/react/docs/uncontrolled-components.html
Controlled Components
https://facebook.github.io/react/docs/forms.html#controlled-components
The Data Flows Down
父组件
和子组件
都不能知道某个组件是有状态
还是无状态
,并且它们不应该关心它是否被定义为一个
函数
或一个类
。组件可以选择将其状态作为道具传递给其子组件:
https://facebook.github.io/react/docs/state-and-lifecycle.html#the-data-flows-down
这通常被称为“自上而下”或“单向”数据流。
任何状态始终由某个特定组件所有,并且从该状态导出的任何数据或UI只能影响树中“下面”的组件。