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

北京做网站建设的公司北京高端网站开发

北京做网站建设的公司,北京高端网站开发,公司logo注册,网页设计与制作教程第二版张晓蕾课后答案背景 最近朋友在面试#xff0c;说面试官问到了一个问题不会#xff0c;说为什么 react hooks为什么不能写在条件语句里#xff0c;今天我们来研究一下这个问题。 我们在来简单实现一个 useState#xff1a; 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}/divdiv{age}/divButton 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}/divdiv{age}/divButton 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://www.hkea.cn/news/14399562/

相关文章:

  • 备案期间怎么做网站数字中国建设峰会 官方网站
  • 西安市网站建设网络推广的途径
  • 福州专业做网站的公司哪家好wordpress 歌词 插件
  • 丰台网站建设联系方式电商运营多少钱一个月
  • 专业做淘宝网站推广江阴企业网站建设
  • 大型网站过程制作h5页面的工具有哪些
  • 如何将软件上传到公开网站太原做网站哪里好
  • 简单炫酷的编程代码怀柔网站建设优化seo
  • 昆明新建设电影院网站wordpress评论高亮
  • 中国海洋大学站群网站建设seo是啥职业
  • 大学制作网站怎么做wordpress忘記密碼
  • 网站模板 黑白个人网页设计作品欣赏图片
  • 网站建设企业官网源码页面设计的要求
  • 网站建设成本报表岑溪网站建设
  • 免费招聘网站有哪些平台百度提交入口网站网址
  • 天津建设招标网站广西建设厅网证件查询
  • wordpress切换主题宁波seo排名优化
  • 同国外做贸易的网站2021年国家大事件有哪些
  • 柳州市诚信体系建设网站荥阳seo推广
  • 科技网站设计公司有哪些wordpress 公司主页
  • 怎么做下载网站网页设计作业html代码大全
  • win2008iis7配置网站宿州网站建设哪家好
  • 邢台哪儿做wap网站好天津品牌网站建设公司
  • 做交流网站辽宁省建设厅网站
  • 常州百度网站排名ui培训公司
  • 网站开发 进度表重庆网站建站建设的费用
  • 成都网站建设网怎么做app和网站购物
  • 商城网站建设可以吗高端建站服务商
  • 网站建设需要哪些功能请别人做网站大概要多少钱
  • 做公司网站需要多久食品销售公司网站制作