当前位置: 首页 > wzjs >正文

php网站开发实例教程 源代码个人网站建设

php网站开发实例教程 源代码,个人网站建设,外贸动态网站制作公司,泉州做网站seo的useStateuseEffectuseRef 什么是hook?16.8版本出现的新特性。可以在不编写class组件的情况下使用state以及其它的React特性 为什么有hook?class组件很难提取公共的重用的代码,然后反复使用;不编写类组件也可以使用类组件的状态st…

  • useState
  • useEffect
  • useRef

什么是hook?16.8版本出现的新特性。可以在不编写class组件的情况下使用state以及其它的React特性

为什么有hook?class组件很难提取公共的重用的代码,然后反复使用;不编写类组件也可以使用类组件的状态state。hook解决函数组件很多功能的问题(state \ 生命周期 \ ref)

hook都是以useXxx开头,并且必须在函数组件内部使用,不能在外面用,否则报错

useState

使用时需要 import {useState} from "react";

let [a,setA]=useState(1);
a:变量名,setA:设置前一个参数的函数,useState(初始化值):此函数返回一个数组对象[]
值:初始化的值,函数:为了修改设置的初始值

setXxx(修改值的方法),这个函数是一个异步函数
调用完不会立刻执行,而是等待页面上所有需要的内容修改完毕之后执行,和虚拟dom的机制有关

import './App.css';
// import {Component} from "react";
import {useState,useEffect} from "react";
//引入子组件
import DoubleKill from "./DoubleKill";
import TripleKill from "./TripleKill";//函数组件
function App() {// let a=1; //声明了页面要使用的数据let [a,setA]=useState(1)let [b,setB]=useState(true)let [arr,setArr]=useState([1,2,3,4,5])let [c,setC]=useState(0)let Com;if(c===0){Com=<DoubleKill/>}else{Com=<TripleKill/>}useEffect(()=>{ //组件一加载就会执行,看做ComponentDidMount,只要数据发生变化它就会执行一次console.log("a---useEffect")},[a])useEffect(()=>{console.log("b---useEffect")},[b])return (<div className="App"><h2>我的react-APP</h2>{/*<h1>{a}</h1><button onClick={()=>{a=2;console.log(a) //页面并不会更新(因为这里的数据不是响应式数据)}}>修改</button>*/}<h1>{a} / {b?"真":"假"}</h1><ul>{arr.map((v,i)=>{return <li key={i}>{v}</li>})}</ul><button onClick={()=>{let _a=a*2;setA(_a);let _arr=[...arr];_arr.push(arr.length+1);setArr(_arr)// console.log(a,b) 异步}}>修改a / arr</button><button onClick={()=>{setB(!b);}}>修改b</button><hr/><button onClick={()=>{setC(0)}}>展示DoubleKill组件</button><button onClick={()=>{setC(1)}}>展示TripleKill组件</button>{Com}</div>);
}//类组件
/*class App extends Component{render(){return(<div className="App"><h2>我的react-APP</h2></div>)}
}*/export default App;

useEffect

组件挂载后和更新数据后都会执行,并且可以在函数组件中多次使用

useEffect(()=>{ console.log("a---useEffect")
},[a])useEffect(()=>{console.log("b---useEffect")
},[b])

如果只想挂载后执行,更新数据不执行呢?useEffect的第二个参数,是一个数组

useEffect(fn) -----监控所有数据的变化,一旦有数据变化就会执行该函数
useEffect(fn,[]) -----空数组,表示不监控任何数据的变化,只在挂载的时候执行一次
useEffect(fn,[a]) -----监听某一个数据的变化,只有这个数据变化了,才会再次执行useEffect(()=>{//组件卸载后执行return中的内容return ()=>{//console.log("完毕");}
})

useRef

函数组件中使用useRef拿页面节点

let p2=useRef(null);
<p ref={p2}>p2</p>
console.log(p2.current); //拿到p2节点
import './App.css';
import {useEffect,useRef} from "react";function App() {let p1=useRef(null); //一般初始值给nulllet p2=useRef(null);useEffect(()=>{console.log(p1.current)console.log(p2.current)})return (<div className="App"><p ref={p1}>p1</p><p ref={p2}>p2</p></div>);
}export default App;
http://www.dtcms.com/wzjs/37033.html

相关文章:

  • 有网址的公司江门seo
  • 网站icp没有备案怎么检查培训学校管理制度大全
  • 后期网站企业站seo价格
  • 高级ui设计是什么seo怎么做优化排名
  • 泉州网站建设费用网站如何在百度刷排名
  • 做爰全国网站关键词优化seo
  • 榆林网站开发东莞专业网站推广工具
  • seo发布网站深圳seo网络优化公司
  • 电子商务网站建设评估工具上海推广系统
  • 监控视频做直播网站怎样进行网络推广效果更好
  • 网站建设中扁平化结构河源疫情最新通报
  • 网站源码网址修改武汉seo排名优化公司
  • 协会网站建设及维护google搜索中文入口
  • 免费ppypp网站seo单词优化
  • 个人域名用来做淘宝客网站餐饮培训
  • 可以看那种东西的浏览器下载天津百度快速优化排名
  • 济南微网站建设网站收录网
  • 瓯北网站建设阿里指数查询入口
  • wordpress没用宣城网站seo
  • 查找北京国互网网站建设谷歌paypal官网入口
  • 网站logo衔接网站建设方案内容
  • wordpress百度云盘插件seo算法优化
  • 三五互联网站管理登录地址seo公司推广
  • 白银做网站新闻发稿平台有哪些?
  • 泉州专业网站制作公司国外网站推广公司
  • 什么网站做英语翻译练习重庆做seo外包的
  • 网站的领券商城怎么做郑州网站建设公司排名
  • 江苏住房与城乡建设部网站网站排名分析
  • 有服务器怎么做网站教程做网站的平台
  • 上线了建站怎么收费最有效的恶意点击