javascript-除之外的React传输道具

反应建议转移道具。 整齐!

我如何转移除一个以外的所有东西?

render: function(){
  return (<Cpnt {...this.propsButOne}><Subcpnt one={this.props.one} /></Cpnt>);
}
Augustin Riedinger asked 2020-07-29T13:52:25Z
3个解决方案
108 votes

您可以使用以下技术来消耗一些道具并传递其余的道具:

render() {
  var {one, ...other} = this.props;
  return (
    <Cpnt {...other}>
      <Subcpnt one={one} />
    </Cpnt>
  );
}

资源

villeaka answered 2020-07-29T13:52:43Z
10 votes

您需要做的是创建props对象的副本并删除不需要的键。最简单的方法是使用lodash中的omit,但您也可以为此编写一些代码(创建一个新的对象,该对象具有道具的所有键,除了一个)。

省略(在顶部有几个选项,具体取决于您导入的包/使用的ES风味):

const omit = require('lodash.omit');
//const omit = require('lodash/omit');
//import { omit } from 'lodash';

...
render() {
    const newProps = omit(this.props, 'one');
    return <Cpnt {...newProps}><Subcpnt one={this.props.one} /></Cpnt>;
}
Dan Caragea answered 2020-07-29T13:53:07Z
3 votes

如果您有很多道具,例如...rest并不需要 defaultProps,将它们全部写入两次可能很烦人。 相反,您可以通过对当前道具的简单循环来自己创建它,如下所示:

let rest = {};
Object.keys(this.props).forEach((key, index) => {
    if(!(key in MyComponent.defaultProps))
       rest[key] = this.props[key];
});
Jodo answered 2020-07-29T13:53:29Z
translate from https://stackoverflow.com:/questions/35152522/react-transferring-props-except-one