生命周期函数
componentWillMount()
只会在装载之前调用一次,在render之前调用
componentDidMount()
该方法会在组件已经被渲染到DOM中后运行;(相当于vue的mounted)
在render之后调用;开始可以通过 ReactDOM.findDOMNode(this)获取到组件的 DOM 节点
更新组件触发:
- componentWillReceiveProps
- shouldComponentUpdate
- componentWillUpdate
- componentDidUpdate
componentWillReceiveProps(nextProps)
在组件接收到一个新的prop(更新后)时被调用,该方法在初始化render时不被调用;
只有一个参数nextProps,下一次的props;在这里可以根据props操作setState()
componentWillUpdate(nextProps, nextState)
在组件接收到新的props或者state但还没有render时被调用。在初始化时不会被调用;不能操作setState()
componentDidUpdate(prevProps, prevState, snapshot)
在组件完成更新后立即调用。在初始化时不被调用;组件重新渲染并且把更改变更到真实的 DOM 以后调用
有三个参数,上一次的props,上一次的state,和快照;
可以在这进行DOM操作、直接调用setState();但在操作setState()时必须放在条件语句里面,不然会死循环;
componentWillUnmount()
组件即将销毁时会运行;
在react项目中引入 Sass
create-react-app创建的react项目,默认就是支持Sass的,使用只需要安装一下node-sass这个包即可使用
npm install node-sass -D
propTypes:定义传参的类型检查
Son.propTypes = {
optionalArray: PropTypes.array,//检测数组类型
optionalBool: PropTypes.bool.isRequired,//检测布尔类型(表示该参数是必穿的)
optionalFunc: PropTypes.func,//检测函数(Function类型)
optionalNumber: PropTypes.number,//检测数字
optionalObject: PropTypes.object,//检测对象
optionalString: PropTypes.string,//检测字符串
optionalSymbol: PropTypes.symbol,//ES6新增的symbol类型
type: PropTypes.any, // 任何类型
}