react组件的name

一、问题描述:
今天在写完一个react项目打包之后运行出现错误,在开发环境的时候是没有问题的。在项目中实现了一个拖动不同的组件会有对应的反应,但是当运行打包后的项目时,一直都只出现第一次拖动的组件对应的反应。程序判断是哪一个组件使用的是组件.name的方式。
二、查找问题:
通过打印的方式,在拖动某个组件之后,输出该组件,发现每一个组件的name都为a。
三、分析问题
由于webpack在打包时,为了减小文件的大小,会对变量,函数等名称进行重命名,然后全部放在一个名为a的函数中,通过apply的形式进行调用。(具体调用函数如下:),所以每次用组件.name拿到的值都为a。
a(){return Object(o.a)(this,a),t.apply(this,arguments)}
四、问题解决
在组件的之后手动添加一个组件.name='组件名称',但是运行的时候报错了,提示name是只读属性。于是最后我给这些组件都添加了一个elementName的属性来保存这些组件本来的名称。在需要的地方访问elementName即可。
五、总结
在程序中不要直接使用react组件的name属性,若需要区分组件,则可以手动给这些组件添加一个属性来区分这些组件。

posted @ 2020-12-05 20:33  如戏一场  阅读(555)  评论(0)    收藏  举报