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

上海企业网站建设费用wordpress 文章编辑插件

上海企业网站建设费用,wordpress 文章编辑插件,域名到期查询,网站建设的单可以刷吗背景 最近朋友在面试#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/14561681/

相关文章:

  • 网站建设认证试题业之峰装饰官网
  • cgi--网站开发技术的雏形阳江网上办事大厅
  • 网站外链接自己可以怎么做百度网站改版提交
  • 手机网站开发方案跨境电商平台是什么
  • 中山市饮食网站建设wordpress打开速度太慢
  • 贵阳建站模板搭建做网站必须要推广吗
  • 高端品牌网站建设公司超炫酷的网站
  • 大连网站建设lccm小游戏网站建设公司
  • 心理健康网站建设方案网站制作计算机
  • 那些网站百度抓取率比较高手机网站页面布局
  • 新的网站建设技术方案wordpress 国内镜像
  • 门户网站应该怎么做网页制作教程视频教学
  • 部门网站建设内容方案婚恋网站建设分析
  • 找人做销售网站企业网站优化软件
  • 百度新网站收录seo关键词是什么意思
  • 支付公司网站制作费怎么做分录怎么在建设银行网站留言
  • 自己做网站卖能赚钱吗wordpress配置要求
  • 做推文封面的网站西安可以做网站的
  • 花都区建设工程造价管理网站广州企业招聘
  • wordpress谷歌网站地图陕西网站建设厦门网站制作
  • 做影集的网站或软件中国十大招商平台
  • 亳州企业网站建设正规优化公司哪家好
  • 在淘宝做网站可以改域名吗尉氏县金星网架公司
  • c# 开发网站开发阿里巴巴网站如何做免费推广
  • 网站个人主页婚庆策划公司的商业模式
  • 广西建网站哪家好临沂森工木业有限公司
  • 网站备案流程及步骤惠州微网站建设
  • 订阅号可以做微网站营销技巧心得体会
  • 滨湖网站建设企业管理咨询是一种
  • 提供网站建设优势wordpress移动端菜单