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

时间:2016-09-06 15:24:16

标签: javascript reactjs

是否可以将道具向下转移到使用{ ..this.props }的子组件,以便更简洁的语法,但是排除某些道具,例如classNameid

2 个答案:

答案 0 :(得分:32)

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

const { className, id, ...newProps } = this.props; // eslint-disable-line
// `newProps` variable does not contain `className` and `id` properties

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

答案 1 :(得分:6)

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

 { ..._.omit(this.props, ['className', 'id']) }

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