我有:
const section = cloneElement(this.props.children, {
className: this.props.styles.section,
...this.props,
});
在 this.props
中,我有一个 styles
属性,我不想传递给克隆的元素。
我能怎么做?
原文由 Fez Vrasta 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有:
const section = cloneElement(this.props.children, {
className: this.props.styles.section,
...this.props,
});
在 this.props
中,我有一个 styles
属性,我不想传递给克隆的元素。
我能怎么做?
原文由 Fez Vrasta 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用 Object Rest Spread 运算符 魔法。
const props = { a: 1, b: 2, c: 3 };
const { a, ...propsNoA } = props;
console.log(propsNoA); // => { b: 2, c: 3 }
所以在你的情况下它将是:
const { styles, ...propsNoStyles } = this.props;
const section = cloneElement(this.props.children, {
className: this.props.styles.section
...this.propsNoStyles,
});
原文由 am0wa 发布,翻译遵循 CC BY-SA 4.0 许可协议
13 回答13k 阅读
7 回答2.2k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.3k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
2 回答2.4k 阅读✓ 已解决
您可以使用 对象 rest/spread 语法:
我假设您已经根据上面的代码获得了此语法的支持,但请注意,这是一个建议的语法,可通过 babel stage 1 preset 提供给您。如果您在执行时遇到语法错误,您可以按如下方式安装预设:
然后将其添加到 babel 配置的预设部分。例如在你的 .babelrc 文件中:
根据 OP 对问题的评论进行更新。
好的,所以你说你已经有一个
styles
在此块之前声明的变量?我们也可以处理这个案子。您可以重命名您的解构参数以避免这种情况。例如: