Jest
基于Jest 的React 组件测试
JSX
-
在
preserve 模式下生成代码中会保留JSX 以供后续的转换操作使用(比如:Babel) 。另外,输出文件会带有.jsx 扩展名。 -
react 模式会生成React.createElement ,在使用前不需要再进行转换操作了,输出文件的扩展名为.js 。 -
react-native 相当于preserve ,它也保留了所有的JSX ,但是输出文件的扩展名是.js 。
假设有这样一个<expr />
,
- 对于
React ,固有元素会生成字符串(React.createElement("div"))
,然而由你自定义的组件却不会生成(React.createElement(MyComponent)) 。 - 传入
JSX 元素里的属性类型的查找方式不同。固有元素属性本身就支持,然而自定义的组件会自己去指定它们具有哪个属性。
固有元素
固有元素使用特殊的接口
declare namespace JSX {
interface IntrinsicElements {
foo: any
}
}
<foo />; // 正确
<bar />; // 错误
在上例中,<foo />
没有问题,但是 <bar />
会报错,因为它没在
基于值的元素
基于值的元素会简单的在它所在的作用域里按标识符查找。
import MyComponent from "./myComponent";
<MyComponent />; // 正确
<SomeOtherComponent />; // 错误
工厂函数
jsx: react
编译选项使用的工厂函数是可以配置的。可以使用<div />
会使用 createElement("div")
来生成,而不是
注释指令可以像下面这样使用(在
import preact = require("preact");
/* @jsx preact.h */
const x = <div />;
生成:
const preact = require("preact");
const x = preact.h("div", null);
工厂函数的选择同样会影响