最近被一个很小的问题困了两天,事后想想不觉好笑,所以分享出来。
在用组件库的能力做表单校验的时候,我发现在触发一次校验后,后面表单就会自动校验,这本来也正常,但我尝试在校验后卸载表单所在组件,初始化状态,这时候表单应该就没有自动校验了,但诡异的是表单依然能自动校验。
各种尝试,找各种原因无果后,我不禁陷入了深深的自我怀疑,难道我对react生命周期的理解不对?难道我初始化组件的操作不对?甚至最后我开始怀疑,我真的适合写代码吗?。。。
这样被折磨两天后,某一刻我突然发现:这个表单本身就会有自动校验,根本和是否手动触发过!也就是说,我因为一个自以为的预设,折磨了自己两天!这个预设就是:这个表单的校验需要手动触发。因为这个预设,所以我从来没怀疑它的正确性,以至于我在错误的路上越走越远。
人们为了解决问题,会引入各种预设。预设很重要,没有预设的问题是无法解答的。然而有些时候预设也会成为解决问题的阻碍。
很多预设,跟它所在的时间、场景有关,一旦脱离这个时间和场景,它立即不再正确。
还有一些预设之所以正确,是因为它无法被验证,这在科学界很常见。在用这些预设解决问题时如果遇到困境,可以换个思路,去验证预设的正确性,指不定会有重大的、颠覆性的突破。爱因斯坦波粒二象性的提出就是很好的例子。
在遇到问题,尝试了所有的途径依然无法解决的时候,不妨回过头来,仔细梳理问题的所有预设,或许会有新的突破。
前车之鉴,后车之师。这次滑稽的经历,如果能带来一些教训值得日后借鉴和警醒,也算是发挥了它的价值吧。