React(函数式组件、jsx、hook、脚手架、路由、组件库)

React基础入门 React系列二 - 核心JSX语法一 React系列二 - 核心JSX语法二 React系列三 - 阶段案例练习 阅读详情

React

写在前面

  1. 这是我学习完react,并用react做了四个小项目之后进行的总结与复盘,很多东西都只是简单地提一嘴,并不会深入地分析,有不妥之处请多多指教
  2. 现在react提倡使用函数式组件,并且由于我对于类不熟悉,学习react的时候对类组件编程不太上心,因此我下面说的大部分都是基于函数式组件的
  3. hook(用在函数式组件里面的)我说到的的只有几个我自己比较熟悉的以及常用的(useState,useEffect,useLocation,useRoutes ),其他的还有useReducer,useContext,useRef,useRef,useMemo,useLayoutEffect以及自定义hook
  4. 我下面的代码都是建立在脚手架上面的
  5. 新手上路~~~

React是什么 React的特点

  1. react是一个将数据渲染为HTML视图的开源JavaScript库
  2. React使用虚拟DOM+优秀的Diffing算法,尽量减少与真实DOM的交互(我们在使用react的过程中,可以不操作真实DOM就不要)
  3. react提倡将功能函数内联在html代码中

jsx

  1. jsx语法的代码使用来编写组件的,也可以说是用来写html代码的,然后在html代码中嵌入功能函数
  2. 语法规则:
    标签中混入JS表达式的时候要用{}将js代码包起来
    jsx中只有一个根标签
    jsx中标签必须闭合
  3. 注意:区分“js语句”和“js表达式”
    js表达式:一个表达式会产生一个值,可以放在任何一个需要值的地方,a、a+b、arr.map()、function test(){ }等
    js语句:if(){ }、for(){ }等

state

  1. 状态:每一次状态的改变都会影响到整一个组件,包括子组件,比如说在代码的最后面修改了状态,在前面用到这个状态的逻辑也会执行一遍(实际上是每次状态改变都会从头“执行”一遍我们的代码)

  2. state初始化:
    使用useState进行初始化。
    形式如下:const [yourState,setYourState]=useState(‘’)
    yourState是你自己的state的名字,setYourState是用于改变state的,useState括号里面是state的初始值

  3. 改变state的值:state的值是不可以用普通方式改变的,改变state的值只能通过声明state时候的setYourState

  4. 具体实例:

import React,{ useState } from 'react'
// state初始化
const [allFrames,setAllFrames]=useState(1);
const [file,setFile]=useState(null);
const [isModalVisible, setIsModalVisible] = useState(false);

// 改变state
setFile(file);
setAllFrames(allFrames + 1);

props

  1. props主要用于父组件向子组件传递信息 以及路由跳转组件的时候传递信息
  2. 具体用例:
// 父组件文件
import React from 'react';
export default function AlExe() {
  return (
  	<MySelect option={['true','false']}/>
  )
}
// 子组件文件
import { Select } from 'antd';
import React from 'react';

// props可以在子组件中直接获取直接使用 但是要先在函数的参数位置放上去
export default function MySelect(props) {
	console.log('props ->',props);
  return (
  	<div>MySelect</div>
  )
}

useEffect

  1. 第一个参数接收一个函数,在组件更新的时候执行,函数返回值是一个函数
  2. 第二个参数接收一个数组,用来表示需要追踪的变量,依赖列表,只有依赖更新的时候才会更新内容;没有依赖的时候就进入时执行一次(但是经常会有进入时执行两遍的情况??)
import React,{ useEffect,useState } from 'react';
export default function Test() {

	const [count,setCount]=useState(0);

	function handleClick(){
		setCount(count + 1);
	}
	
	useEffect(() => {
	    console.log('[count]被调用了');
	}, [count])
	
	useEffect(() => {
	    console.log('[]被调用了');
	}, [])
	
  return (
  	<div onClick={handleClick}>Test</div>
  )
}

函数柯里化与高阶函数

  1. 函数柯里化:通过函数调用继续返回函数的方式,实现多次接受参数最后统一处理的函数编码方式
  2. 高阶函数:如果一个函数符合下面2个规范的任何一个,那该函数就是高阶函数
    若A函数,接受的参数是一个函数,那么A就可以称之为高阶函数
    若A函数,调用的返回值依然是一个函数,那么A就可以称之为高阶函数
    不用柯里化的可以直接箭头函数返回一个函数的调用
function handleBlur(e){
	console.log(e.target.value);
}
// 涉及到函数的闭包 还有点模糊
// 调用箭头函数 传参Event给箭头函数 Event再传给handleBlur并返回handleBlur的调用
<input onBlur=((Event)=>{handleBlur(Event)}>
// 函数声明
function handleDetail(value){
	console.log(value);
}
// 这两个不能直接用的哈 只是演示一下这样的传参方式
{
	arr.map(i => {
   		return ({
   			// 使用箭头函数传参 调用箭头函数 返回一个函数的调用
   			// 这里的参数是直接传给handleDtail函数的
      		<a onClick={() => handleDetail(i)}>详细信息</a>
   		})
	});
}

生命周期

  1. 生命周期我目前用得不多
    生命周期

Diffing算法

  1. Diffing算法对比的最小力度是标签,就是说标签里面的文本是不对比的
  2. key是虚拟DOM对象的标识,在更新时key起着及其重要的作用
  3. 当状态中的数据发生变化的时候,react会根据“新数据”生成“新的虚拟DOM”,随后react进行新旧虚拟DOM的diff比较(比较key),决定是否生成生成/替换真实DOM
  4. 选择key,最好使用每条数据的唯一标识作为key(不变的)

脚手架

  1. 我一般用VSCode的终端来执行命令 电脑命令行也是可以的
  2. 我一般用npm来执行命令的 用yard也是可以的
  3. 全局安装脚手架 这个只要安装过一次就好了
$ npm i-g create-react-app
  1. 切换到想创建项目的目录 下面的hello-react是项目名 你自己决定
$ create-react-app hello-react
  1. 启动项目 记住一定要进入项目文件夹再启动项目
    我遇到过的一个坑是创建完项目就立即启动项目 结果就报错了 !!
    应该先进入项目文件夹 创建完项目之后并不会帮你自动进入到项目文件夹的
$ npm start
  1. 项目打包 项目打包后才可以部署到服务器上面
$ npm run build

redux

  1. redux在小项目中可能用不到,但是在大项目中会用得到,目前还没有做过大项目 ,因此redux目前我不熟,就先不展开了
  2. redux是用来在组件间通信的

路由(下面写的是React Router 6)

react-router-dom

  1. react-router-dom是react中的一个库
  2. 基本项目中都会用到,但是需要手动安装
$ npm i react-router-dom

内置路由

  1. < BrowserRouter > 路由 一般不用这个 哈希路由相对来说好用点
  2. < HashRouter > 哈希路由 使用这个路径上面会有一个# 一般用这个
  3. < Router >
  4. < Redirect >
  5. < Link >
  6. < NavLink >
  7. < Routers >

路由的固定结构

路由定位
  1. element用于放置由路由导进来的组件,不然路径是会改变,但是组件并不会出现
import React from 'react';
import { useRoutes } from 'react-router-dom'
import routes from './routes'
import Head from './component/head';

export default function App() {
    const element = useRoutes(routes);
    return (
        <div>
            <Head />
            {element}
        </div>
    )
}
路由包裹
  1. src文件夹下的index.js文件中
  2. 用< HashRouter >或者< BrowserRouter >将组件包裹起来路由才能发挥作用
  3. 一般项目开发中,直接包裹最外面的那个组件(< App/ >),我一般用< HashRouter >,虽然路径看起来没有那么清爽,但是功能更加强大,< HashRouter >本质是锚点?
import React from 'react'
import  ReactDOM  from 'react-dom/client'
import App from './App'
import { HashRouter } from 'react-router-dom';

root.render(
  <React.StrictMode>
    <HashRouter><App /></HashRouter> 
  </React.StrictMode>
);
路由表
  1. 路由表一般放在routes文件夹里面,命名为index.js
  2. 一般都将路由统一在路由表里面配置
import React from 'react'
import { Navigate } from 'react-router-dom'

import Dlzc from '../pages/logandreg'
import Adminl from '../component/adminl'
import Register from '../component/register'
import ManageUser from '../pages/manageUser'

const routes = [
    {
    	// 以及路由的路径是带'/'的 意义是‘当前路径下’?
        path: '/dlzc',
        element: <Dlzc />,
        children: [
        	// 二级路由(嵌套路由)是不带'/'的 意义是'从头开始查找'?
            {
                path: 'namel',
                element:<Namel/>,
            },
            {
                path: 'register',
                element:<Register/>
            },
            {
                path: '',
                element: <Navigate to='namel' />
            }
        ]
    },
    {
        path: '/manageUser',
        element: <ManageUser />,
    },
    // 这样做的意义是默认导向 Navigate用于重定向
    {
        path: '',
        element: <Navigate to='ManageUser'>
    }
]
 export default routes 

子路由

  1. 一级路由出现的地方是{element}, 子路由(嵌套路由)出现的地方是
  2. 如果没有< Outlet/ >,触发路由之后路径是会改变,但是组件不会出现
import React from 'react'
// 导出Outlet
import { Outlet } from 'react-router-dom'

export default function Dlzc() {
    return (
        <div>
            <Outlet />
        </div>
    )
}

Link和NavLink

  1. Link和NavLink的区别:两者的区别在于NavLink在点击时会有自带的active属性
  2. 前提:
    路由事先在路由表中注册好
    {element}或者< Outlet/ >已经放好了
  3. 具体使用:
<NavLink to='namel'>用户登录</NavLink>
<Link to='register'>用户注册</Link>

重定向:useNavigate与useLocation(这两个是hook,用于函数式组件的)

  1. 前提:
    路由事先在路由表中注册好
    {element}或者< Outlet/ >已经放好了
// LogPack文件夹中的index.jsx
import React from 'react'
// 1. 导出useNavigate
import { useNavigate } from 'react-router-dom';

export default function LogPack() {

	// 2. 定义navigate
  	const navigate = useNavigate();
  	const data=[{name:'kkt',age:18},{name:'xiaoming',age:18}];

  	function handleDetail() {
  		// 使用navigate进行重定向 state用于传递参数
  	  	navigate('/logdetail', { state: data});
  	}
 
  return (
  	// 点击这个链接 调用了handleDetail函数 重定向至另一个组件(将当前组件换成了另一个组件)
  	// 组件的放置的位置仍然是{element}
	<a onClick={handleDetail}>详细信息</a>
  )
}
// LogDetail文件夹中的index.jsx
import React from 'react'
// 1. 导入useLocation
import { useLocation } from 'react-router-dom'

export default function LogDetail() {

	// 2. useLocation().state就是传过来的数据 state是键
    console.log(useLocation().state);

    return (
    	<div>logDetail</div>
    )
}

组件库

  1. antd是一个很好用的组件库,有很多小组件实用性都较好,表格也做得不错,文档页写得不错自己也可以对antd的组件进行封装,提高代码的复用率,附上antd传送门
  2. antV主要用于数据的可视化,文档写得不错,附上antV传送门
  3. echarts是一个图表库,功能很强大,文档个人认为有点难懂,附上ECharts传送门,想要使用基于ECharts基于react的封装,得走这里,这个是ECharts的react封装的一个库,在github上面的

注意

  1. '…'运算符(展开运算符)
    展开运算符很好用,包括在对象中、数组中,在很多地方都是可以用到展开运算符的。
    展开运算符用于展开一个可迭代对象(比如数组…arr),或者{…data},data是一个对象,这样的用法相当于浅复制一个对象
  2. JavaScript中的众多方法,特别是数组的很多方法在react中都是很有必要的
  3. ES6在react中也得用得相当顺手
  4. 一般组件文件夹以组件名来命名,而组件文件均以index.jsx命名
React(总结) 阅读详情

相关推荐

reactHookApp:使用hook搭建的react的脚手架

Hooks 由react hooks + react router + redux + react-redux编写 使用方法 npm install // 或者yarn install npm run dev // 本地开发 npm run build // 打包 目录结构 支持的功能 使用create-react-app脚手架 在此基础上增加了less的支持和autoprefixer 支持code spliting 参考文档

java程序员的之-react脚手架搭建项目以及hooks简单讲解,状态管理、路由配置、axios框架使用

Hook 简介 | React中文网hook的使用主要用于在function组件中;安装axios:npm install axiosaxios就是一个封装好的ajax工具组件,它可以设置拦截器做统一处理的事情;});

huangyunming的博客 627

Java Web 图书管理系统的制作指南

实现对图书信息的增删改查(CRUD)操作。支持用户登录与权限管理。图书借阅与归还功能。系统管理员可以管理用户信息和图书库存。

Xiaoxin的博客 1629

React详解(CDN引入、JSX、脚手架、类组件、函数组件、事件、Hooks、生命周期方法、Ref使用、注意点)

目录 React CDN引入 开发版本 压缩版本(生产环境) React.createElement(str,obj,innerHTML) ReactDOM.render(h3,ele) JSX 使用 注释 数组 内联渲染样式 脚手架 创建项目包 安装VScode插件 JSX提示 类组件 接收参数 state状态 setState(state,callback) defaultProps this.forceUpdate(callback) 函数组件 .....

AIWWY的博客 3078

手把手教你搞定EMC EFT测试:从电源线到信号线的完整整改实战(附常见失败原因)

本文详细解析了EMC EFT测试中的常见问题及整改措施,从电源线到信号线的完整实战方案。通过四步定位法和成本最优整改策略,帮助工程师有效应对电快速脉冲群干扰,提升产品通过率并降低成本。

weixin_30920597的博客 498

c++通过自然语言处理技术分析语音信号音高

其中,缓冲区大小为2048,最小基频为80Hz,最大基频为1000Hz。通常情况下,音高在85Hz到255Hz之间,因此可以根据实际情况修改最小和最大基频值。C++中可以使用数字信号处理库或语音处理库,比如MATLAB、Praat、YIN算法等等来进行音高分析。对于语音信号的音高分析,可以使用基频提取技术。基频是指一个声音周期的重复率,也就是一个声音波形中最长的周期。通常情况下,人的声音基频范围是85Hz到255Hz。这段代码使用了YIN算法来计算语音信号的基频,得出的结果即为音高。

SYC20110120的博客 1728

React脚手架

父子组件兄弟组件(非嵌套组件)祖孙组件(跨级组件)1.props:2.消息订阅-发布:pubs-sub、event等等3.集中式管理:redux、dva等等4.conText:生产者-消费者模式父子组件:props兄弟组件:消息订阅-发布、集中式管理祖孙组件(跨级组件):消息订阅-发布、集中式管理、conText(开发用的少,封装插件用的多)

miracle5220的博客 2057

030、微透镜阵列与光场成像:从光场相机到深度感知的演进

文章摘要: 光场成像通过微透镜阵列(MLA)同时记录光线的位置与方向,实现单次曝光获取三维信息。其核心架构包括主镜头+MLA+传感器或相机阵列,各有分辨率与体积的权衡。光场支持先拍照后对焦和深度估计,但受限于微透镜基线短,精度较低。深度算法需结合多视角立体匹配与极平面图像分析,并处理噪声和温度漂移等实际问题。光场适用于短距离动态场景(如手势识别),而远距离高精度需求仍需激光雷达。建议初学者通过二手光场相机和开源工具入门,理解光场“角度域”与“空间域”的协同机制。

sundong_81的博客 50

ReactHook学习(第一篇-N)

ReactHook学习(第一篇-N)

weixin_68658847的博客 1072

Kong API Gateway 配置与深入

Kong是一个开源的、高性能的API网关,提供了一种简单易用的服务间路由、流量管理和安全防护方案,其最初起源于Nginx Inc.,但后迁移至Apache Software Foundation。Kong支持RESTful、GraphQL、TCP/UDP等协议,可与AWS Lambda、Azure Functions、Google Cloud Functions等云函数平台集成。其主要功能包括:服务发现与负载均衡、请求代理、身份认证与授权、缓存、日志记录、监控指标、灰度发布、多种插件等。

AI天才研究院 2284

Agent Harness Engineering: AI Agent 执行管控与安全沙箱 原理与最佳实践

我们正站在计算范式转移的历史节点上。2024-2026 年间,AI 系统从被动的内容生成器(Generative AI)演变为主动的行动执行者(Agentic AI)。这一转变的根本特征是:根据 2026 年初的行业数据:然而,能力的提升伴随着风险的指数级增长。2024-2026 年间发生的多起标志性安全事件揭示了 Agent 系统的脆弱性:案例 1:Slack AI 数据外泄事件(2024 年 8 月)案例 2:制造业供应链攻击(2026 年 Q3)案例 3:Arup 深度诈骗案(2026 年 9 月)这

AI天才研究院 1669

React JSX底层处理机制、函数组件

JSX底层处理机制、函数组件、属性props的处理、关于对象的规则设置

weixin_69497729的博客 533

YOLO11涨点优化:卷积魔改 | DCNv2升级版本,助力检测

在DCN的基础上,增加了2个创新点,分别是调制模块和使用多个调制后的DCN模块,从形成了DCN的升级版本——DCNv2

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 967

【尚硅谷React】——React全家桶笔记

尚硅谷天禹老师的react全家桶课程

qq_44870156的博客 1万+

ENVI入门系列教程---一、数据预处理---1.1基本操作--5.x以后的界面(新界面)

every blog every motto: You never know how strong you really are until being strong is the only choice you have。 0. 前言 本系列教程旨在系统学习并梳理ENVI。说来惭愧,作为一名GISer,对ENVI这类软件还不能熟练掌握,这也是本系列教程的初衷。种一棵树最好的时间是十年以前,其次是...

胡侃有料的博客 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

React18 入门与进阶

React18 入门

weixin_49809163的博客 4277

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

React教程(详细版)

一、简介(背景) 本文篇幅较多,建议耐心看完,我相信多少会对你有所帮助! 1.1、概念 它是一个将数据渲染为HTML视图 的js库 1.2、原生js痛点 用dom的API去操作dom,繁琐且效率低 用js直接操作dom,浏览器会进行大量的回流和重绘 原生js没有组件化的编程方案,代码复用性低,哪怕有模块话的概念,但模块化也只能拆解一个个js,对样式和结构也没办法拆解,组件化就相当于3剑客整体拆解,成为一个个的小功能 1.3、React特点 采用组件化模式,声明式编码,提高开发效率和组件复用性 在R

m0_54853146的博客 2万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

React 17尚硅谷禹神React视频同步笔记

本文章是尚硅谷禹神讲解的React 视频的同步笔记。

weixin_51452515的博客 859

React 全家桶(react脚手架 redux react-redux react-router-dom ui库 reactHook)含 自定义hook的方法及使用

React 全家桶(react脚手架 redux react-redux react-router-dom ui库 reactHook)含 自定义hook的方法及使用

秋天,黄叶坠地,凉风有信。 1446

React路由守卫权限管理

路由守卫是指在路由跳转前、跳转后做一些动作所触发的钩子函数,在后台管理系统中涉及到权限控制相关的逻辑时经常会看见,在实现路由跳转真实动作前会先校验该登录用户是否有权限,或者是token是否过期才会通过,反之就会执行其他操作,例如返回首页或登录页。那么如何通过来实现项目中的路由守卫呢?一共有两种方案:通过公共高阶组件拦截;在项目根目录判断拦截;

量子前端的博客 3080

【React】路由,Hooks

❤️ Author: 老九🙏 个人名言:不可控之事 乐观面对。

李小浦的博客 3130

浅析React JSX 与生命周期(React笔记之一)

本文是结合实践中和学习技术文章总结出来的笔记(个人使用),如有雷同纯属正常((✿◠‿◠))React是目前国内最热门的两大前端MVVM框架之一,它拥有高效率的函数式组件和class类组件,通过输入数据吐出UI的模式受到很多前端工作者的喜爱。

qq_32453495的博客 1419

React

值:{count}

m0_58430841的博客 935

React 笔记 jsx

html 内置标签通过is属性 标记为 自定义组件通过定义 组件函数的参数来设定 props。

海胆的博客 1249
上一篇: 响应式布局-(media、flex、rem) 最后一行左对齐
下一篇: react中的antd-自定义antd的主题色
Taoika
博客等级 码龄5年 186粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值