首页 > 其他分享 >react扩展

react扩展

时间:2022-10-22 19:11:26浏览次数:86  
标签:count 扩展 react state 组件 加载 setState

-

一、setState的两种用法

setState是异步的调用,当我们代用过setState后,紧接着打印state的值,发现是更改之前的值。

对象式和函数式

import React, { Component } from 'react'

export default class Demo extends Component {
  state = { count: 0 };
  add = () => {
    // 对象式的setState
    // // setState是异步的
    // // 第二个可选参数是个回调函数,是在值更新后,render调用后再调用
    // this.setState({count: this.state.count+1}, () => {
    //   console.log(this.state.count, '值更改之后'); // 1
    // });
    // console.log(this.state.count, 'this.state.count=='); // 0

    // 函数式的setState
    // 函数的参数可以接受到state和props
    this.setState((state, props) => {
      return { count: state.count+1}
    })

    // 对象式的setState是函数式的简写方式(语法糖)
    // 如果依赖于原来的状态,推荐用函数式的
  }
  render() {
    return (
      <div>
        <h2>当前求和为:{this.state.count}</h2>
        <button onClick={this.add}>点我加1</button>
      </div>
    )
  }
}

二、路由的lazyLoad

懒加载

若果不用懒加载的形式,当项目加载时,会把所有的组件一下加载下来,会导致首次加载的资源很多,首页出现白屏的时间很长

懒加载是调用react中的lazy方法实现路由来加载的,还会用到react中自带的一个组件Suspense,这个组件用来指定组件未加载的时候显示的内容,可以是node节点,可以是组件,不过这个组件不能是懒加载。

import React, { lazy, Suspense } from 'react'
import { NavLink, Route, Routes } from 'react-router-dom'
// import Home from '../Home'
// import About from '../About'
// 懒加载
const Home = lazy(() => import('../Home'))
const About = lazy(() => import('../About'))

export default class Demo extends React.Component {
  render() {
    return (
      <div className="container">
        <div className="main">
          <aside className="aside">
            { /**
             * 编写路由链接
             * 在react中,靠路由连接切换组件
             */}
              <NavLink className="btn" to="/home">home</NavLink>
              <NavLink className="btn" to="/about">about</NavLink>
          </aside>
          <div className="content">
            {/**
             * 注册路由
             */}
             {/* Suspense组件是指定在路由对应的组件未加载之前显示的内容,可以是组件 */}
             <Suspense fallback={<h1>路由为加载之前</h1>}>
                <Routes>
                    <Route path="/home" element={<Home/>}></Route>
                    <Route path="/about" element={<About/>}></Route>
                </Routes>
             </Suspense>
              
              
          </div>
        </div>
      </div>
    )
  }
}

 

 

 

 

-

标签:count,扩展,react,state,组件,加载,setState
From: https://www.cnblogs.com/fqh123/p/16816847.html

相关文章

  • #yyds干货盘点# 动态规划专题:跳台阶扩展问题
    1.简述:描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶(n为正整数)总共有多少种跳法。数据范围:进阶:空间复杂度  ,时间复杂......
  • React基础篇——九、Portals
    九、PortalsReact16的Portals特性让我们可以把组件渲染到当前组件树以外的DOM节点上。典型的应用场景是渲染全局的应用弹框,使用Portals后,任意组件都可以把弹框组件渲染到......
  • React基础篇——十、自定义DOM属性
    十、自定义DOM属性React16之前会忽略不是把的HTML和SVG属性,现在React会把不识别的属性传递给DOM。React16之前:<divcust-attr="someting"></div>会被渲染成:......
  • 597 选择器扩展_选择器 and 598 属性1
    扩展选择器:         1.选择所有元素:            语法:*{}         2.并集选择器:            选择器1,选择......
  • CSS选择器_基础选择器和扩展选择器
    5.选择器:筛选具有相似特征的元素 *分类: 1.基础选择器 1.id选择器:选择具体的id属性值的元素.建议在一个html页面中id值唯一 *语......
  • 选择器-基础选择器、扩展选择器、CSS属性
    选择器-基础选择器 <title>选择器</title><style>#div1{color:red;}#class1{color:gray;}......
  • React Ref
    ReactRef用法一给标签设置ref="xxx"(通过这个获取this.refs.username,ref可以获取到应用的真实DOM)用法二给组件设置ref="xxx"(通过这个获取this.refs.xxx,ref可以获取......
  • React魔法堂:size-sensor源码略读
    前言echarts-for-react在对echarts进行轻量级封装的基础上,额外提供图表尺寸自适应容器尺寸的这小而实用的功能,而这功能的背后就是本文想介绍的size-sensor了。源码介绍s......
  • React相关《下》
    React组件有几种特殊方法,它们提供了在组件生命周期中的特定点执行操作的机会,它们被称为生命周期方法或生命周期钩子,允许我们在特定时间点捕获组件,比如在组件被渲染之前、更......
  • React学习--路由不跳转
    在配置React路由的时候遇到的问题,url跳转了但是页面没有跟着刷新,找了很久没找到问题最后想了想可能是因为index.js的<React.StrictMode>导致的,注释之后就成功了......