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

网站安全防护方案关于数据库的网站开发

网站安全防护方案,关于数据库的网站开发,织梦cms sql注入破解网站后台管理员账号密码,旅游网站建设与实现为什么避免在循环、条件或嵌套函数中调用 Hooks 为了确保 Hook 在每一次渲染中都按照同样的顺序被调用。这让 React 能够在多次的 useState 和 useEffect 调用之间保持 hook 状态的正确。 我们可以在单个组件中使用多个 State Hook 或 Effect Hook#xff1a; function Form… 为什么避免在循环、条件或嵌套函数中调用 Hooks 为了确保 Hook 在每一次渲染中都按照同样的顺序被调用。这让 React 能够在多次的 useState 和 useEffect 调用之间保持 hook 状态的正确。 我们可以在单个组件中使用多个 State Hook 或 Effect Hook function Form() {// 1. 使用变量名为 name 的 stateconst [name, setName] useState(Mary);// 2. 使用 effect 以保存 form 操作useEffect(function persistForm() {localStorage.setItem(formData, name);});// 3. 使用变量名为 surname 的 stateconst [surname, setSurname] useState(Poppins);// 4. 使用 effect 以更新标题useEffect(function updateTitle() {document.title name surname;});// ... }那么 React 怎么知道哪个 state 对应哪个 useState答案是 React 靠的是 Hook 调用的顺序。 let hookStates []; // 放着此组件的所有的hooks数据 let hookIndex 0; // 代表当前的hooks的索引 function useState(initialState){// 如果有老值取老值,没有取默认值hookStates[hookIndex] hookStates[hookIndex] || initialState;// 暂存索引let currentIndex hookIndex;//setState方法将当前值置为新值function setState(newState){hookStates[currentIndex] newState;//置完新值立刻触发渲染render();}return [hookStates[hookIndex], setState]; }因为我们的示例中Hook 的调用顺序在每次渲染中都是相同的所以它能够正常工作 // ------------ // 首次渲染 // ------------ useState(Mary) // 1. 使用 Mary 初始化变量名为 name 的 state useEffect(persistForm) // 2. 添加 effect 以保存 form 操作 useState(Poppins) // 3. 使用 Poppins 初始化变量名为 surname 的 state useEffect(updateTitle) // 4. 添加 effect 以更新标题// ------------- // 二次渲染 // useState - 不再使用传入的默认值而是返回上次渲染时存储的状态值。 // useEffect 首先运行之前 useEffect 的清理函数如果有的话然后再运行新的副作用函数。 // ------------- useState(Mary) // 1. 读取变量名为 name 的 stateMary参数被忽略 useEffect(persistForm) // 2. 清除并替换上一次 form 的 effect useState(Poppins) // 3. 读取变量名为 surname 的 statePoppins参数被忽略 useEffect(updateTitle) // 4. 清除并替换上一次更新标题的 effect// ...useEffect Hook有什么作用如何理解 替换与清除 告诉 React 需要在完成DOM更新之后渲染之后执行一些“副作用”如数据获取、手动更改DOM、设置订阅或者清除上一次的副作用等。 useEffect(persistForm) 在首次渲染时添加了一个副作用即 persistForm 函数。然后在随后的组件更新第二次渲染中相同的 useEffect(persistForm) 调用会首先清除前一次的副作用如果 persistForm 返回了一个清除函数的话然后再执行新的 persistForm 副作用。 这样确保了副作用是最新的并且在多次渲染之间不会有冲突。这也是为什么我们说第二次和随后的渲染是“替换”前一次的副作用。 只要 Hook 的调用顺序在多次渲染之间保持一致React 就能正确地将内部 state 和对应的 Hook 进行关联。但如果我们将一个 Hook (例如 persistForm effect) 调用放到一个条件语句中会发生什么呢 比如 // ???? 在条件语句中使用 Hook 违反第一条规则if (name ! ) {useEffect(function persistForm() {localStorage.setItem(formData, name);});}在第一次渲染中 name ! ‘’ 这个条件值为 true所以我们会执行这个 Hook。但是下一次渲染时我们可能清空了 name表达式值变为 false。此时的渲染会跳过该 HookHook 的调用顺序发生了改变 useState(Mary) // 1. 读取变量名为 name 的 state参数被忽略 // useEffect(persistForm) // ???? 此 Hook 被忽略 useState(Poppins) // ???? 2之前为 3。读取变量名为 surname 的 state 失败 useEffect(updateTitle) // ???? 3 之前为 4。替换更新标题的 effect 失败第一次调用 useState(Mary)此时 hookIndex0状态被存储在 hookStates[0]。 然后我们跳过 useEffect(persistForm)。 接下来的 useState(Poppins) 会使用 hookIndex1但在上一次渲染中它使用了 hookIndex2。这会导致 surname 的状态从错误的位置获取。 以此类推后续的 useEffect(updateTitle) 也会使用错误的索引。
http://www.dnsts.com.cn/news/178193.html

相关文章:

  • 网站做会员系统网站建设 010
  • 手机端网站开发 免费食堂承包技术支持 东莞网站建设
  • 网站编程工资多少wordpress版权文字
  • 江都区城乡建设局网站马局网站英文联系我们
  • 多用户建站平台win7装什么版本wordpress
  • 六安有哪些做网站的公司台州市知名专业做网站
  • 可作外链的网站电子商务网上购物网站建设规划
  • 特种工建设网站wordpress 宣布停止
  • 网站添加百度地图标注青岛低价网站建设
  • 有什么网站交互做的很好 知乎深圳外贸公司排行
  • 太原网站排名公司开发高端客户
  • 兰州市城乡住房建设局网站学做网站要代码
  • 网页制作站点网站信息备案管理系统
  • 如何建立一个永久网站佛山模板建站代理
  • 让网站打开更快淘宝导购网站模版
  • 华泰保险公司官方网站电话威廉网站建设
  • hs网站推广做视频网站投入多少
  • 网站建设招标网站建设举报
  • 美团网站建设规划书个人网页设计教程
  • 威海市住房和城乡建设局官方网站wordpress显示分类
  • 云南建个网站哪家便宜泰州网站制作报价
  • 网站维护是什么工作wordpress手机版侧栏导航
  • 网站的开发与维护wordpress加产品展示
  • 全国分类信息网站国外一些建筑公司网站
  • 厦门做网站个人在哪个网站上做简历
  • 网站建设除了凡科还有哪些wordpress内容表单
  • 杭州响应式建站价格网络规划设计师工资
  • win2008sr怎么用iis做网站wordpress 作品 区别
  • 怎么查询网站开发公司网站后台进不去的原因
  • 网站开发的公司电话旅游网站设计说明