传输{..this.props}但排除某些道具

问题描述:

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

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

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

主要优点:不像madox2的建议,你不要任意变量名称污染的范围只是为了避免将某些道具传递给儿童组件。而且,在编写这个答案的时候,你也没有处理实验性的ES.next功能。

可以采用拆解做好这项工作:

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

由于这句法目前ECMAScript的提案(REST /传播属性),你将需要transpile代码启用该功能(例如,使用巴贝尔)。

+1

这真是太神奇了,但有没有简单的方法没有eslint和喜欢抱怨使用这种模式的未使用的变量声明(除了禁用此规则)? – m90

+0

@madox这是很好的,但有点需要我手动处理道具,因为我想利用所有这些道具通过,只有排除我不需要的道具,而不是包括我需要的道具 – Ilja

+0

@ m90添加评论,该特定行禁用eslint – madox2