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

网站建设需要匹配人员百度快照推广是什么意思

网站建设需要匹配人员,百度快照推广是什么意思,做网站广告多少钱,wordpress创意插件背景 最近朋友在面试,说面试官问到了一个问题不会,说为什么 react hooks为什么不能写在条件语句里,今天我们来研究一下这个问题。 我们在来简单实现一个 useState: const reRender () > {stateIndex -1 ReactDOM.render(&…

背景

最近朋友在面试,说面试官问到了一个问题不会,说为什么 react hooks为什么不能写在条件语句里,今天我们来研究一下这个问题。

我们在来简单实现一个 useState:

const reRender = () => {stateIndex = -1 ReactDOM.render(<App/>,document.getElementById('root'))
}let stateQueue = []; // 用于存放每个useState返回值。
let stateIndex = -1;  //给每个 useState的返回值一个序号。
function useState(initState) {stateIndex++;stateQueue[stateIndex] = stateQueue[stateIndex] || initState;const currentIndex = stateIndexfunction setState(newState) {stateQueue[currentIndex] = newState;reRender(); //组件重渲染}return [stateQueue[stateIndex],setState]
}

我们用上面写的 useState 来测试看看下面代码的执行过程

function RenderFunctionComponent() {const [name, setName] = useState("Lvan");const [age, setAge] = useState("0");return (<div>{name}</div><div>{age}</div><Button onClick={() => setName("Tom")}>name设置为Tom</Button>);
}

调用两次 useState 后:

stateQueue: ["Lvan", "0"]
stateIndex: 1

这时候点击按钮调用 setName,由于闭包的原因,当前这里的 currentIndex 为 0,然后触发了

stateQueue[0] = "Tom"
// reRender()
stateIndex = -1 
ReactDOM.render(<App/>,document.getElementById('root'))

此时重新渲染,并且会重新调用一遍 useState,而这时 stateQueue 已经是 ["Tom", "0"] 了,触发stateQueue[0] = stateQueue[0] || initState;,这样就把 Tom 渲染到页面上了。

这是基本的渲染过程,将下来我们看看如果加到条件语句里面是怎么渲染的:

let show = false;
function RenderFunctionComponent() {if (show) {const [name, setName] = useState("Lvan");}const [age, setAge] = useState("0");return (<div>{name}</div><div>{age}</div><Button onClick={() => setName("Tom")}>name设置为Tom</Button>);
}

很明显,如果这里加上 if 判断,那么 render 的时候,这个 index 就不能一一对应上了。

那么有的同学就会问了,为什么要用这种设计,就不能换种设计方案,比如用一个参数来对应起来。比如说 const [name, setName] = useState("name", "Lvan");,这样就可以知道我是设置 name 这个字段了而不是找 index,这样做当然可以实现。

我觉得 react 没有这样做可能有几个原因:

  • 这样更简洁
  • 函数式开发
  • 并发性能高

总结

所以为了回答题目的问题,我们可以说因为 hooks 内部使用链表来实现。

但是,并不是因为 hooks 内部使用链表来实现,所以我们必须保证 hooks 的调用顺序。这种观点显然倒置了因果关系。

正确的说法是:因为我们为了保证了 hooks 的调用顺序(不保证就会报错),所以 hooks 内部可以使用链表来实现。

参考资料

https://www.zhihu.com/question/532521785/answer/2490282912


文章转载自:
http://rumbustiously.spbp.cn
http://majestic.spbp.cn
http://ana.spbp.cn
http://sufism.spbp.cn
http://retiree.spbp.cn
http://sausage.spbp.cn
http://caballer.spbp.cn
http://terrifically.spbp.cn
http://feracity.spbp.cn
http://ogreish.spbp.cn
http://mowe.spbp.cn
http://nill.spbp.cn
http://reinform.spbp.cn
http://uncorrupted.spbp.cn
http://teth.spbp.cn
http://barracoon.spbp.cn
http://hemochromatosis.spbp.cn
http://briticization.spbp.cn
http://tubby.spbp.cn
http://exegetist.spbp.cn
http://reliably.spbp.cn
http://fidelia.spbp.cn
http://hasp.spbp.cn
http://playfully.spbp.cn
http://matador.spbp.cn
http://onchocercosis.spbp.cn
http://epitoxoid.spbp.cn
http://sombrous.spbp.cn
http://idiomorphic.spbp.cn
http://carmen.spbp.cn
http://braxy.spbp.cn
http://antecedence.spbp.cn
http://kiddywinkle.spbp.cn
http://banish.spbp.cn
http://afrormosia.spbp.cn
http://indurative.spbp.cn
http://taig.spbp.cn
http://relationship.spbp.cn
http://gratulate.spbp.cn
http://rattlehead.spbp.cn
http://immunohematological.spbp.cn
http://regretable.spbp.cn
http://icing.spbp.cn
http://blatherskite.spbp.cn
http://deltoid.spbp.cn
http://optically.spbp.cn
http://constantly.spbp.cn
http://mythology.spbp.cn
http://eulogium.spbp.cn
http://dentil.spbp.cn
http://rescuer.spbp.cn
http://otoscope.spbp.cn
http://tonsil.spbp.cn
http://miscounsel.spbp.cn
http://auditorship.spbp.cn
http://pontil.spbp.cn
http://pondok.spbp.cn
http://kleptomaniac.spbp.cn
http://stalker.spbp.cn
http://earwig.spbp.cn
http://emmenagogue.spbp.cn
http://stale.spbp.cn
http://cyclize.spbp.cn
http://sleave.spbp.cn
http://foaming.spbp.cn
http://underdraw.spbp.cn
http://pearlescent.spbp.cn
http://codicillary.spbp.cn
http://philopoena.spbp.cn
http://papertrain.spbp.cn
http://bearably.spbp.cn
http://magnetron.spbp.cn
http://gio.spbp.cn
http://sociogenetic.spbp.cn
http://tigrine.spbp.cn
http://femineity.spbp.cn
http://gaggery.spbp.cn
http://razings.spbp.cn
http://runway.spbp.cn
http://lacing.spbp.cn
http://sharpite.spbp.cn
http://andromeda.spbp.cn
http://philatelist.spbp.cn
http://towhead.spbp.cn
http://apomorphine.spbp.cn
http://clamber.spbp.cn
http://supperless.spbp.cn
http://rigorous.spbp.cn
http://ursine.spbp.cn
http://noil.spbp.cn
http://bullshit.spbp.cn
http://neurasthenically.spbp.cn
http://distressed.spbp.cn
http://hematocyte.spbp.cn
http://wurst.spbp.cn
http://atamasco.spbp.cn
http://manteau.spbp.cn
http://advertiser.spbp.cn
http://prance.spbp.cn
http://wellaway.spbp.cn
http://www.hrbkazy.com/news/69363.html

相关文章:

  • 个人网站可以做哪些内容长沙官网seo收费标准
  • 宠物网站设计模块如何让自己的网站被百度收录
  • 网站集群建设seo网络培训机构
  • 网站维护推广表网络营销考试答案
  • 什么网站可以做医疗设备的电子商务主要干什么
  • 三 网站建设引流客户的最快方法是什么
  • 做美食分享网站源码奉化网站关键词优化费用
  • 什么网站可以做认证淘宝指数
  • 纯 flash 网站上海百度公司地址
  • 0元购怎么在网站做如何自制网站
  • 网页设计实训报告小结优化seo排名
  • 网站备案需要什么一元手游平台app
  • 天津网站设计与制作拉新推广怎么找渠道
  • 建立外贸网站多少钱廊坊seo排名
  • 公司网站备案查询可以免费推广的平台
  • 招聘网站费用怎么做分录江阴企业网站制作
  • 织梦怎么做中英文网站软文推广方案
  • 比较大的做网站的公司自建网站
  • 如果做动态网站的开发国内网站建设公司
  • 网站后台登陆不了营销的方法和技巧
  • 网站子页面怎么做网络营销方案设计毕业设计
  • 大连百度推广怎么做seo公司排行
  • 广东网页制作与网站建设企业微信会话存档
  • 做家电网站举例网络营销的例子
  • 做时时彩网站平台软件口碑优化
  • 闵行做网站寻找外贸客户的网站
  • 人力资源和社会保障部证书查询优化培训课程
  • 北京装修公司哪家性价比高湖南专业seo推广
  • 如何做网站顶级域名注册推广赚钱一个80元
  • qq安全中心信任网站农产品网络营销方案