这两天尤大喷React文档的内容又被前端圈疯传,内容如下,看了这个内容后,我的第一反应是:他是懂的玩流量博人眼球的,操作跟近期抖音上某些博主互喷互黑如出一辙。
自己Vue和React两个框架都用过,下面发表一下自己的几点看法:
框架仅仅是框架,目的是利用该框架快速实现产品解决问题,所以不用深陷框架的好坏、快慢之中,跟随部门的技术选型走即可,毕竟也许在不久的将来,将会有新的内容替换掉现在的前端框架;
Vue封装的内容过多导致记忆成本过高,而React更加贴合原生JS(封装内容少),所以两者的心智负担只是在不同维度(多次尝试对比和大厂选型,个人还是推荐React,毕竟门槛越高我们的安全系数越高);
跨出框架,回归原生,也许在未来更具备竞争力。
说了两个框架中自己的看法,来看看上述引起该争论话题的文档,其页面地址如下:https://react.dev/learn/you-might-not-need-an-effect#updating-state-based-on-props-or-state,然后通盘阅读了该文档,建议朋友们也可以阅读一遍,确实挺好:
全篇类似于一个最佳实践,通过这些写法能够提升运行效率(并没有说写法会出问题),所以我认为该部分内容并不能说是React的坑;
截图中的例子更像是一个计算属性,因为fullName可以通过state中的firstName和lastName计算得到,所以没有必要封装到useEffect中,封装进去会导致重复渲染的问题。(相比于封装一个computed这样的函数,感觉这种写法更能降低我的记忆成本)
function Form() {
const [firstName, setFirstName] = useState('Taylor');
const [lastName, setLastName] = useState('Swift');
// 🔴 Avoid: redundant state and unnecessary Effect
const [fullName, setFullName] = useState('');
useEffect(() => {
setFullName(firstName + ' ' + lastName);
}, [firstName, lastName]);
// ...
}
function Form() {
const [firstName, setFirstName] = useState('Taylor');
const [lastName, setLastName] = useState('Swift');
// ✅ Good: calculated during rendering
const fullName = firstName + ' ' + lastName;
// ...
}
写到最后——技术人对技术的优劣都有自己的观点,这些观点无关乎正确好坏之分,但是在发表观点时不要带着明显的个人感情色彩并进行无脑的抨击,辩论会促进技术的进步、过度争论只会让圈子更加浮躁,愿我们用夸奖的态度让生态蒸蒸日上,加油!!!