Javascript 如何使用JSX'在React元素上定义属性;收集';变成一个物体?

Javascript 如何使用JSX'在React元素上定义属性;收集';变成一个物体?,javascript,reactjs,Javascript,Reactjs,在此代码中: const App = ({val}) => { console.log(val) // logs 20 to console return <div>val</div> } <App val={20} val2={1}/> 然后在App的论点中,我实际上是这样分解结构的: const {val} = {val: 20, val2: 1} 因此,从JSX的转换中,似乎出现了与解构相反的情况。这是正确的吗 发生这种情况的过程是否

在此代码中:

const App = ({val}) => {
  console.log(val) // logs 20 to console
  return <div>val</div>
}

<App val={20} val2={1}/>
然后在
App
的论点中,我实际上是这样分解结构的:

const {val} = {val: 20, val2: 1}
因此,从JSX
的转换中,似乎出现了与解构相反的情况。这是正确的吗

发生这种情况的过程是否使用了“rest”操作?

React.createElement
的语法糖,是
React.createElement
props参数的语法糖,它是一个对象

<App val={20} val2={1}/>
对于其他适用的道具,它们是对象扩展语法的语法糖

<App val={20} val2={1} {...rest}/>
还是ES6

React.createElement(App, Object.assign({ val: 20, val2: 1}, rest));
React.createElement
的语法糖,是
React.createElement
props参数的语法糖,它是一个对象

<App val={20} val2={1}/>
对于其他适用的道具,它们是对象扩展语法的语法糖

<App val={20} val2={1} {...rest}/>
还是ES6

React.createElement(App, Object.assign({ val: 20, val2: 1}, rest));

简而言之,它是由JSX解析器完成的,其中一个解析器实现是

这个过程的例子是

  • 逐行查看JSX代码
  • 根据规范识别反应元件(见下文)
  • 对于每个元素,将解析它们的属性和值。并将它们推入
    属性
    数组。稍后将成为
    React.createElement
    props
    对象

描述JSX语法的规范可以在这里找到

简而言之,它是由JSX解析器完成的,解析器实现之一是

这个过程的例子是

  • 逐行查看JSX代码
  • 根据规范识别反应元件(见下文)
  • 对于每个元素,将解析它们的属性和值。并将它们推入
    属性
    数组。稍后将成为
    React.createElement
    props
    对象

描述JSX语法的规范可以在这里找到

JSX语法糖需要一个预处理步骤来创建
React.createElement
。我想我要问的是,是否有一种方法可以将const定义的变量“收集”到单个对象中:const a=2、b=3、c等等,然后将它们作为单个对象与这些键一起传递。我猜我现在不是在写这篇文章(对于rest/spread/destructuring我仍然有点不确定-如果这是一个糟糕的问题,很抱歉),这就是上面显示的
rest
对象。它将是
constprops={a:2,b:3},我想。这就是你要问的吗?JSX语法糖需要一个预处理步骤来创建
React.createElement
。我想我要问的是,是否有一种方法可以将const定义的变量“收集”到单个对象中:const a=2、b=3、c等等,然后将它们作为单个对象与这些键一起传递。我猜我现在不是在写这篇文章(对于rest/spread/destructuring我仍然有点不确定-如果这是一个糟糕的问题,很抱歉),这就是上面显示的
rest
对象。它将是
constprops={a:2,b:3},我想。这是你问的吗?