美文网首页
React基础

React基础

作者: 吃肉肉不吃肉肉 | 来源:发表于2020-04-10 00:11 被阅读0次

    React是用于构建用户界面的 JavaScript 库

    特点

    1.声明式设计 −React采用声明范式,可以轻松描述应用。
    2.高效 −React通过对DOM的模拟,最大限度地减少与DOM的交互。
    3.灵活 −React可以与已知的库或框架很好地配合。
    4.JSX − JSX 是 JavaScript 语法的扩展。React 开发不一定使用 JSX ,但我们建议使用它。
    5.组件 − 通过 React 构建组件,使得代码更加容易得到复用,能够很好的应用在大项目的开发中。
    6.单向响应的数据流 − React 实现了单向响应的数据流,从而减少了重复代码,这也是它为什么比传统数据绑定更简单。

    React-搭建脚手架

    安装 nodeJS
    安装create-react-app

    npm install -g create-react-app
    
    

    启动项目

        cd myreact
        yarn start
        // npm run start
    
    

    JSX语法

    JSX 是一个看起来很像 html 的 JavaScript 语法扩展。

    js和html混合

    1. 只能有一个根节点

    return (
      <div className="App">
        <h1>你好react</h1>
      </div>
    );
    // Classname="App" 就是根节点
    
    

    )2. 可以执行javascript表达式 {}

    {1+1}   
    {i == 1 ? '对的!' : '错误的'}
    
    

    )3. 类名class 变成 className

    <div className="App">
     </div>
    
    

    4. 行内样式 展开

    var myStyle = {
      "font-size": "14px",
      "color": "#FF0000"
    }
    return (
    
      <div className="App">
        <h1 style={myStyle}>你好react</h1>
      </div>
    
    );
    
    

    5. 注释 {/* 注释 */}

    6. 数组里面可以直接写html节点

    var arr = [
      <h1>组件渲染</h1>,
      <h1>虚拟dom</h1>
    ]
    return (
      <div className="App">
       {arr}
      </div>
    );
    
    

    条件渲染

    {isLog?"欢迎回来":"请登录"}
    //&&左右两边都为真,结果才为真  
    {isLog&&"已登录"}
    
    

    列表渲染

    1.jsx 中的数组里面可以包含html Dom 结构,在jsx数组会自动展开

        let list = [react,vue,angular]
        list.map((item,index)=>{return(<div key="index">{item}</div>)})
        [<div key="0">react</div>,<div key="1">vue</div>,<div key="2">angular</div>,
    
    

    表单绑定

    <input value={this.state.msg}>
    //双向
    <input  value={this.state.msg} onChange={this.changeMsg.bind(this)}>
    
    

    事件响应

    • 1.需要驼峰写法

        onClick
        onFocus
      
      
    • 2.执行

     onClick={this.showMsg}
    //特别注意方法不要()
    
    
    • 3.改变事件响应函数的this指向(默认响应函数的this指的是当前dom元素)
      修改this指向
            onClick={this.addNum.bind(this)}
            onClick = {()=>{this.addNum(  )}}
    
    

    state使用
    组件的数据(状态)
    定义

    constructor(props){
        super(props);
        this.state = {name:"yaya"}
    }
    
    

    使用

        {this.state.name}
    
    

    修改

    this.setState({"yaya":"hsy"})
    //在更新state 也会同时更新dom
    
    

    props使用

    定义 父传子的数据
    定义过程

    • 1.在调用组件得时候传入
      <Child age="20">
    • 2.Child 组件得获取
      {this.props.age}
      特点
      只读,不可变
      默认
      Child.defaultProps={age:18} //默认props设置

    子元素给父元素传递参数

    核心思想 传入的props是一个函数

    <child myfun ={this.changelt.bind(this)}>
    //在child内部
    <button onClick={this.props.myfun('数据')}>
    
    

    数组相关方法

        map((item,index,self)=>{...}) //映射出一个新的数据组
        arr.indexOf(item)  ///查找数组所在的下标,找不到返回-1
        arr.splice(从多少,删除数量)
        arr.unshift()   //从前面添加内容
        arr.filter(item=>{...})   //过滤数组,如果回调函数返回true保留,false过滤
    
    

    函数的bind方法

    fun.bind(上下文this,参数执行参数A,参数B)
    
    //执行fun 里面的this用第一个参数带代替,后面的参数A,B 为函数的参数
    
    

    相关文章

      网友评论

          本文标题:React基础

          本文链接:https://www.haomeiwen.com/subject/wtgkmhtx.html