React 总结笔记 (更新中……) 上

简介: React 总结笔记 (更新中……)

React


1、React基础


1、引入React


引入react使用cdn方式,还有另一种


<!-- 引入React核心库 -->
<script crossorigin src="https://unpkg.com/react@18/umd/react.development.js"></script>
<!-- 引入ReactDOM,用于支持react操作DOM -->
<script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>


2、使用React渲染


<body>
    <div id="root"></div>
</body>
// React18版本之前的渲染DOM方法
// ReactDOM.render('你好',document.getElementById('root'))
<script type="text/babel">
  // React18版本使用的渲染DOM方法
    const root = ReactDOM.createRoot(document.getElementById('root'));
  const dom = React.createElement('div', {value:'你好'}, '你好a');
  // 虚拟dom
    console.log(dom);
    root.render(dom)
</script>


3、jsx语法


<!-- 引入babel,用于将jsx转为js -->
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
<!-- script标签类型需是babel类型 -->
<script type="text/babel">
  const myId = 'heLLo';
  const myData = 'shang';
  //1.创建虚拟DOM
  const VDOM = (
    <div>
    <h2 className="title" id={myId.toLowerCase()}>
      <span style={{ color: 'white', fontSize: '29px' }}>
      {myData.toUpperCase()}
        </span>
    </h2>
    <h2 className="title" id={myId.toUpperCase()}>
      <span style={{ color: 'white', fontSize: '29px' }}>
      {myData.toLowerCase()}
        </span>
    </h2>
    <input type="text" />
    {/*如果这个标签名为大写的话,jsx会认为这是个组件*/}
    {/*<Sz>雷猴</Sz>*/}
    </div>
  )
  //2.渲染虚拟DOM到页面(react18版本使用的渲染方法)
  const root = ReactDOM.createRoot(document.getElementById('test'))
  root.render(VDOM)
</script>


jsx语法规则:


1.定义虚拟DOM时,不要写引号。


2.标签中混入JS表达式时要用{}。


js表达式:只有一行代码 并且要有返回值


a 变量a


function fn(){}//不行


fn()// 函数调用


a?b:c //三元表达式


3.样式的类名指定不要用class,要用className。


4.内联样式,要用style={{key:value}}的形式去写。


5.只有一个根标签


6.标签必须闭合


7.标签首字母


(1).若小写字母开头,则将该标签转为html中同名元素,若html中无该标签对应的同名元素,则报错。


(2).若大写字母开头,react就去渲染对应的组件,若组件没有定义,则报错


2、React 组件


1、两种不同的组件


1.1、函数组件(无状态组件):


函数组件又叫做无状态组件


// 定义
function Hello() {
    // 此处的this是undefined,因为代码经过babel编译后开启了严格模式
    console.log(this);
    return (
        <div>这是一个函数组件</div>
    )
}
// 函数组件的两种使用方式
{Hello()}
<Hello></Hello>


函数组件规范:


1、使用函数或箭头函数定义


2、名称需要是大写字母开头


3、必须要有返回值,表示该组件的结构


1.2、类组件(有状态组件):


类组件又叫做有状态组件,状态(state)及数据


无状态组件为了展示静态数据,有状态组件为表示动态数据


// 定义
class Hello extends React.Component {
    //render中的this是谁?—— MyComponent的实例对象 <=> MyComponent组件实例对象。
  console.log('render中的this:',this);
    render() {
        return <div>这是一个类组件</div>
    }
}
// 使用


类组件规范:


1、使用ES6里的class定义


2、名称需要是大写字母开头


3、类组件应该继承React.Component父类, 从而可以使用父类中的方法或属性


4、必须提供render方法,和返回值


1.3、受控组件和非受控组件


受控组件:


通过自己实现数据的双向绑定,就是受控组件


非受控组件:


组件不受数据控制


3、React事件处理


3.1、事件绑定


class ClassHello extends React.Component {
  oncli(){
    alert('点击了Hello')
  }
  render() {
    return (
      // 使用this调用类中的方法
      <div className='hello' onClick={this.oncli}>我是一个函数组件!</div>
    )
  }
}


语法:on+事件名称={ }


事件名称采用驼峰命名法


3.2、事件对象


e: 事件对象


function Btn() {
  function alt(e) {
    console.log('事件对象:', e.target);
  }
  return (
    // 函数组件中使用事件
    <button onClick={alt}>点我!</button>
  )
}
// 函数组件
function FunctionHello() {
  function alt(e) {
    // 阻止浏览器得默认行为
    e.preventDefault()
    console.log('事件对象:', e.target);
  }
  return (
    <div><Btn></Btn>我是一个函数组件!</div>
  )
}

目录
相关文章
|
10月前
|
前端开发 API
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-react-redux的工作流程
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-react-redux的工作流程
58 0
|
10月前
|
前端开发
前端学习笔记202305学习笔记第二十九天-React keep alive原理之2
前端学习笔记202305学习笔记第二十九天-React keep alive原理之2
42 0
|
10月前
|
前端开发
前端学习笔记202306学习笔记第四十八天-react-admin marmelab之8
前端学习笔记202306学习笔记第四十八天-react-admin marmelab之7
30 0
|
20天前
|
前端开发 JavaScript
前端知识笔记(二十六)———React如何像Vue一样将css和js写在同一文件
前端知识笔记(二十六)———React如何像Vue一样将css和js写在同一文件
34 1
|
7月前
|
前端开发
前端笔记:React的form表单全部置空或者某个操作框置空的做法
在React框架前端开发中,经常会有弹出框的开发,涉及到弹出框,难免就会有表单。一般在关闭弹出框或者对表单联动时,往往都需要考虑对表单进行置空操作了。
53 0
|
10月前
|
Web App开发 前端开发 JavaScript
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber解决了什么问题
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber解决了什么问题
51 0
|
10月前
|
JavaScript 前端开发 调度
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber和虚拟dom关系
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber和虚拟dom关系
81 0
|
10月前
|
前端开发
前端学习笔记202307学习笔记第六十一天-react知识点串讲之11
前端学习笔记202307学习笔记第六十一天-react知识点串讲之11
44 0
|
10月前
|
前端开发
前端学习笔记202305学习笔记第二十九天-React keep alive原理之1
前端学习笔记202305学习笔记第二十九天-React keep alive原理之1
34 0
|
10月前
|
前端开发
前端学习笔记202305学习笔记第二十九天-React keep alive原理之4
前端学习笔记202305学习笔记第二十九天-React keep alive原理之4
31 0