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

上海企业网站建设费用网站分析表

上海企业网站建设费用,网站分析表,诸暨网站开发,软件公司招聘信息背景 最近朋友在面试#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/14377053/

相关文章:

  • 重庆推广网站的方法长沙网站设计建设
  • 内蒙古工程建设招投标中心网站宁夏快速自助制作网站
  • 休闲食品网站建设传媒公司做网站条件
  • 唐山公司网站建设 中企动力唐山淘宝网站建设的主图如何设计
  • 如何做h5简历制作网站网站免备案空间
  • 买CAD设计图做的网站网络营销公司架构
  • 广东专业网站开发长春网站关键词推广
  • 晋江住房和城乡建设局网站sem工作内容
  • 网站建设销售如何接单网站备案要
  • 个人备案可以建企业网站吗行业网站建设方式有哪些
  • 旅游网站开发的重要性公司微网站怎么建设
  • 仿站能被百度收录吗洪梅镇做网站
  • 手机免费永久建立网站高端网站开发公开课
  • 深圳网红打卡旅游景点关键词推广seo怎么优化
  • 采集网站后台数据论坛网站开发框架angular
  • 站长统计app软件大全百度6大核心部门
  • 设计公司网站公司详情wordpress配置ftp服务器
  • 大学网站模板下载2022年新闻大事
  • 宁波网站建设优化企业沈阳有资质做网站的公司有哪些
  • 网站悬浮图标怎么做做装饰材料的网站
  • 网站维护多少钱一个月网站推广的岗位要求
  • 医疗器械网站怎么做网站建设责任分解
  • 网络推广网站推广怎么做干果网站
  • 做静态网站有什么用公司网站建设费用计入什么科目
  • 广东宏福建设有限公司网站电脑访问手机网站跳转
  • 哈尔滨网站建设服务公司网易邮箱163 com登录
  • 不备案的网站能打开吗公司网站实名认证
  • 关于网站建设领导分工建设银行网站首页打
  • 北京网站建设公司华网天下下Wordpress上传文件权限
  • 怎么做有优惠券的网站各大网站投稿邮箱