课程章节介绍
同学们,我们来看一个数据表里的经典例子,它展示了怎么优雅地处理“你先我后”的依赖问题。
假设你有一张表格,里面每一行的数据,和用来处理选中状态的方法,它们到达组件的时间顺序可能不一样。比如有时行数据先加载好了,选中方法还没传进来;有时候方法先到了,行数据还没准备好。我们怎么保证无论谁先来,最终都能正确执行,而且只执行一次呢?
这个例子里用了一个共享的响应式状态对象,里面放着所有属性。重点是行数据那个设置器,它被调用的时候,会先把值存起来,然后问两个问题:一是“处理选中的方法到了没?”,二是“我是不是还没处理过?”。只有这两个条件都满足,它才会调用一次 markSelectedHandler,同时立一个标志位,表示这件事已经干过了。
这个标志位很关键。设想一下,如果行数据先来,处理选中的方法还没到,那它就把值存好,但跳过处理,相当于先到的人在门口等。等过一会儿方法到了,一看,哦行数据已经在等了,就立刻处理。反过来,如果方法先到,行数据后到,行数据设置器发现方法早就等着了,也会直接处理。而如果因为某些原因两个设置器同时都触发了操作,那个标志位就能拦住,避免重复干活。
这样就巧妙地解决了依赖顺序不确定的问题,不管你谁先来,最终都能协调好,而且只做一次。这种依赖关系管理模式,在复杂组件里很实用。大家理解了吗?可以试着想一想,还有哪些场景也适合用这种“先到等,后到触发,加个标志防重复”的思路。
关键词
LWC
Lightning Web Components
Salesforce