在所有含有构造函数的的 React 组件中,构造函数必须以 super(props)
开头。
每次在组件中调用 setState
时,React 都会自动更新其子组件。
当你遇到需要同时获取多个子组件数据,或者两个组件之间需要相互通讯的情况时,需要把子组件的 state 数据提升至其共同的父组件当中保存。
在 React 中,有一个命名规范,通常会将代表事件的监听 prop 命名为 on[Event]
,将处理事件的监听方法命名为 handle[Event]
这样的格式。
一般来说,有两种改变数据的方式。第一种方式是直接修改变量的值,第二种方式是使用新的一份数据替换旧数据。
React 会通过 key
来自动判断哪些组件需要更新。组件是不能访问到它的 key
的。
强烈推荐,每次只要你构建动态列表的时候,都要指定一个合适的 key。
@connect解释
connect 方法返回的也是一个 React 组件,通常称为容器组件。因为它是原始 UI 组件的容器,即在外面包了一层 State。connect 方法传入的第一个参数是 mapStateToProps 函数,该函数需要返回一个对象,用于建立 State 到 Props 的映射关系。
@connect其实只是connect的装饰器、语法糖罢了。(http://www.cnblogs.com/CyLee/p/9308604.html)
import React, { Component } from 'react';
import { connect } from 'dva';
@connect(({ login, loading }) => ({
login,
submitting: loading.effects['login/login'],
}))
传入一个对象({login, loading}),返回一个对象。login这个参数来自models/login.js中的 effects/*login中的yield put中的type指定的函数([reducers/changeLoginStatus]的返回值)。
login和submitting都会绑定到this.props上。
加载路由的时候,会动态加载当前文件下的model文件,也就是对应文件下的src/models/login.js。
connect 有两个参数:
- mapStateToProps:将状态绑定到组件的props。
- mapDispatchToProps:将方法绑定到组件的props。