客户端非 ES6 浏览器上的 JSX 传播属性
JSX Spread Attributes on client side non-ES6 browsers
ReactJS JSX 有一种方法可以轻松地向组件添加大量属性:
var props = {};
props.foo = x;
props.bar = y;
var component = <Component {...props} />;
这些称为传播属性。
https://facebook.github.io/react/docs/jsx-spread.html#spread-attributes
...
表示法称为 Spread 运算符,它在 ES6 中使用。如果您使用 Babel 等在服务器端渲染所有内容,这很容易使用,但是如果您想在客户端的浏览器中创建和渲染组件,您如何为不支持的浏览器使用 Spread Attributes支持 ES6 ...
传播运算符?
ReactJS 通常的工作流程是在将 JSX 提供给客户端之前通过 Babel(通过像 Browserify/Webpack 这样的构建工具)转换它。因此,您可以获得所有 ES6(或 ESNext)好东西。
尽管语法相似,但 JSX 展开运算符与 ES6 展开运算符并不相同,使用前者不需要后者。虽然 JSX 转译器 可以 将带有 JSX 扩展运算符的 JSX 标签转换为使用 ES6 扩展运算符的 JavaScript,但实际上他们只是将其转换为 ES5 代码。想看看 Babel 是怎么做到的,try it out on the Babel site。本质上,这:
var obj = { className: 'foo' };
var el = <Component id='bar' {...obj}/>;
...变成这样:
var obj = { className: 'foo' };
var el = React.createElement(Component,
Object.assign({ id: 'bar' }, obj));
(根据属性的位置略有不同。)
不需要 ES6 扩展运算符。
换句话说,如果您使用转译器将您的 JSX 转换为 JavaScript——而且您是,因为没有浏览器直接支持 JSX——您无需担心转译后的代码有展开运算符,因为你没有使用 ES6 展开运算符,你使用的是 JSX 展开运算符,它被转换成浏览器可以理解的东西。
ReactJS JSX 有一种方法可以轻松地向组件添加大量属性:
var props = {};
props.foo = x;
props.bar = y;
var component = <Component {...props} />;
这些称为传播属性。
https://facebook.github.io/react/docs/jsx-spread.html#spread-attributes
...
表示法称为 Spread 运算符,它在 ES6 中使用。如果您使用 Babel 等在服务器端渲染所有内容,这很容易使用,但是如果您想在客户端的浏览器中创建和渲染组件,您如何为不支持的浏览器使用 Spread Attributes支持 ES6 ...
传播运算符?
ReactJS 通常的工作流程是在将 JSX 提供给客户端之前通过 Babel(通过像 Browserify/Webpack 这样的构建工具)转换它。因此,您可以获得所有 ES6(或 ESNext)好东西。
尽管语法相似,但 JSX 展开运算符与 ES6 展开运算符并不相同,使用前者不需要后者。虽然 JSX 转译器 可以 将带有 JSX 扩展运算符的 JSX 标签转换为使用 ES6 扩展运算符的 JavaScript,但实际上他们只是将其转换为 ES5 代码。想看看 Babel 是怎么做到的,try it out on the Babel site。本质上,这:
var obj = { className: 'foo' };
var el = <Component id='bar' {...obj}/>;
...变成这样:
var obj = { className: 'foo' };
var el = React.createElement(Component,
Object.assign({ id: 'bar' }, obj));
(根据属性的位置略有不同。)
不需要 ES6 扩展运算符。
换句话说,如果您使用转译器将您的 JSX 转换为 JavaScript——而且您是,因为没有浏览器直接支持 JSX——您无需担心转译后的代码有展开运算符,因为你没有使用 ES6 展开运算符,你使用的是 JSX 展开运算符,它被转换成浏览器可以理解的东西。