编程语言
首页 > 编程语言> > javascript-客户端非ES6浏览器上的JSX传播属性

javascript-客户端非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

…表示法称为ES6中使用的Spread运算符.如果您要使用Babel等在服务器端渲染所有内容,那么这很容易使用,但是如果您想在客户端的浏览器中创建和渲染组件,则如何在不使用浏览器的浏览器中使用扩展属性支持ES6 … Spread运算符?

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,reactjs,react-jsx
来源: https://codeday.me/bug/20191009/1882183.html