转移{..this.props}但排除某些

Ilj*_*lja 14 javascript reactjs

是否可以将道具传递给子组件,{ ..this.props }用于更简单的语法,但是排除某些道具,如classNameid

mad*_*ox2 34

您可以使用解构来完成这项工作:

const { className, id, ...newProps } = this.props; // eslint-disable-line
// `newProps` variable does not contain `className` and `id` properties
Run Code Online (Sandbox Code Playgroud)

由于此语法当前是ECMAScript提议(Rest/Spread Properties),因此您需要转换代码以启用此功能(例如,使用babel).

  • 这太神奇了,但是有没有什么简单的方法可以让 eslint 之类的人抱怨使用这种模式的未使用的变量声明(除了禁用此规则)? (3认同)
  • @Ilja你会把`newProps`传递给孩子,所以`className`和`id`是被排除的.这不是你想要的吗? (2认同)

Sal*_*Sal 7

如果您不介意使用第三方库,您还可以使用lodash的omit功能:

 { ..._.omit(this.props, ['className', 'id']) }
Run Code Online (Sandbox Code Playgroud)

主要优点:与madox2的建议不同,您不会使用任意变量名来污染您的范围,只是为了避免将某些道具传递给子组件.此外,在撰写此答案时,您也没有处理实验性ES.next功能.