gpt4 book ai didi

javascript - 客户端非 ES6 浏览器上的 JSX 传播属性

转载 作者:行者123 更新时间:2023-11-30 08:34:05 24 4
gpt4 key购买 nike

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 ... 扩展运算符吗?

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator#Browser_compatibility

最佳答案

尽管语法相似,但 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 展开运算符,它被转换成浏览器可以理解的东西。

关于javascript - 客户端非 ES6 浏览器上的 JSX 传播属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33748509/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com