React进阶学习笔记(含ES6、webpack)

1、ref的使用方法

1.1 回调函数

绑定到组件:

<input 
    id="jspang" 
    className="input" 
    value={this.state.inputValue} 
    onChange={this.inputChange.bind(this)}
    //关键代码——----------start
    ref={(input)=>{this.input=input}}
    //关键代码------------end
    />

使用时:

inputChange(){
    this.setState({
        inputValue:this.input.value
    })
}

另一个demo

<body>
<div id="example"></div>

<script type="text/babel">
class MyComponent extends React.Component {
  handleClick() {
    // 使用原生的 DOM API 获取焦点
    this.refs.myInput.focus();
  }
  render() {
    //  当组件插入到 DOM 后,ref 属性添加一个组件的引用于到 this.refs
    return (
      <div>
        <input type="text" ref="myInput" />
        <input
          type="button"
          value="点我输入框获取焦点"
          onClick={this.handleClick.bind(this)}
        />
      </div>
    );
  }
}
 
ReactDOM.render(
  <MyComponent />,
  document.getElementById('example')
);
</script>

</body>

2. 生命周期函数

生命周期函数指在某一个时刻组件会自动调用执行的函数

在这里插入图片描述

2.1 初始化阶段

Initialization阶段,定义属性(props)和状态(state)。

2.2 挂载阶段

Mounting阶段,伴随整个虚拟DOM的生成,分三个小的生命周期函数。componentWillMountcomponentDidMount``render,前两个只有在页面刷新时候执行,而render只要符合条件就执行。

2.2.1 componentWillMount()

在组件即将被挂载到页面的时刻执行。

2.2.2 render()

在页面state或props发生变化时执行。

2.2.3 componentDidMount()

组件挂载完成时被执行。

2.3更新阶段

2.3.1 componentWillReceiveProps (nextProps)

通过接受一个nextProps,对比nextProps和this.props,将nextProps的state设为当前组件的state,重新渲染组件

  componentWillReceiveProps (nextProps) {
    nextProps.openNotice !== this.props.openNotice&&this.setState({
        openNotice:nextProps.openNotice
    }() => {
      console.log(this.state.openNotice:nextProps)
      //将state更新为nextProps,在setState的第二个参数(回调)可以打         印出新的state
  })
}

2.3.2 shouldComponentUpdate(nextProps,nextState)

在setState之后,state发生变化,组件会进入重新渲染的过程,这时候return flase可以阻止组件更新。

主要面向:react父组件重新渲染后会导致子组件全部重新渲染,如果有需要可以在子组件的该生命周期中做出选择。

2.3.3 componentWillUpdate (nextProps,nextState)

当第二步shouldComponentUpdate(nextProps,nextState)返回true以后,组件进入重新渲染流程。

2.3.4 componentDidUpdate(prevProps,prevState)

组件更新完毕,react只会在第一次初始化成功进入componentDidUpdate,之后每次重新渲染后都会进入这个生命周期,这里可以拿到更新前的参数状态,preProps,preState

2.4 销毁阶段

componentWillUnmount()

组件在页面中被删除时候执行,比如在xiaojiejie.js,当我们点击服务项去删除,这时候函数就被执行了

3、axios数据请求

axios不依赖于react,在原生js也可以使用,是目前的主流ajax插件
在componentMount函数里请求ajax。

例如对掘金的一个接口为例,发出一次Ajax请求

componentDidMount(){
    axios.post('https://web-api.juejin.im/v3/web/wbbr/bgeda')
        .then((res)=>{console.log('axios 获取数据成功:'+JSON.stringify(res))  })
        .catch((error)=>{console.log('axios 获取数据失败'+error)})
}

4、ECMAScript 6.0

4.1 模块

4.1.1 导入模块

import '模块文件地址'
import 组件 from '模块文件地址'

4.1.2 导出模块

export default class MyComponent extends Component{
    ...
}

4.1.3 引用

import MyComponent from './MyComponent';

4.2 组件

4.2.1 定义组件

通过定义一个继承自React.Component的class来定义一个组件类

class Photo extends React.Component {
    render() {
       ...
    }
}

4.2.2 state与props

props和state的差别:props用于父子组件传参,不可更改,state用于定义参数,可通过setState更新,每次更新后都会重新渲染组件。

4.3 箭头函数

一种匿名函数

	参数=>{
   			...
			return x}

5、webpack

Webpack 是一个前端打包工具。它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。

一个项目生成的脚手架,开发、构建相关文件可能就有十几个,代码几百行。
在这里插入图片描述
webpack从一个js文件为入口,通过import 、require等依赖声明,遍历整个文件数,将各种类型的文件通过loader转换为webpack可以识别的文件【如果有webpack不能识别的,可以去npm一些插件】

最后生成bundle.js文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值