发现问题的背景
平平无奇的空标签是怎么引起我的注意的呢?
最近在开发小程序的时候,发现之前在项目中无脑使用的[空标签<></>]竟然报错,报错信息如下:
原来空标签并不是直接拿来使用的啊!
空标签<></>
在react中,因为节点渲染是可以放在函数中去处理的,但是要求return出去的时候,只能存在一个根标签;
但是有时候,我们根本不需要这样一个根标签的存在,但是如果用div或者小程序中用View去包一层,在页面渲染的时候这个节点也会被渲染出来;这个时候就可以使用空标签React.Fragment();
使用空标签在页面渲染的时候,就不会有这个节点的存在,而直接渲染出被包裹的元素;
而我经常使用的空标签<></>,其实就是<React.Fragment/> 的语法糖;
如果你的项目中直接使用<></>报错的话,可以退而求其次使用<React.Fragment/>;
但是怎么才能直接使用<></>呢?
tsconfig的配置
因为项目中使用的是TypesScript,在项目中的tsconfig.json配置文件中,配置了很多tsx的编译选项,而与空标签相关的编译选项就是:jsxFragmentFactory;网上对这个选项给出的解释是:
jsxFragmentFactory:指定 JSX 片段工厂函数在指定了 jsxFactory 编译器选项的情况下针对 react JSX 发出时使用。
反正,解决方式就是在配置文件中添加下面的内容就可以了;
"jsxFragmentFactory": "React.Fragment",