React 建议使用Transfer Props。整洁的!
除了一个,我怎么能转移所有的?
render: function(){
return (<Cpnt {...this.propsButOne}><Subcpnt one={this.props.one} /></Cpnt>);
}
React 建议使用Transfer Props。整洁的!
除了一个,我怎么能转移所有的?
render: function(){
return (<Cpnt {...this.propsButOne}><Subcpnt one={this.props.one} /></Cpnt>);
}
您可以使用以下技术来消耗一些props并传递其余props:
render() {
var {one, ...other} = this.props;
return (
<Cpnt {...other}>
<Subcpnt one={one} />
</Cpnt>
);
}
您需要做的是创建 props 对象的副本并删除您不想要的键。最简单的方法是使用omit
fromlodash
但您也可以为此编写一些代码(创建一个新对象,该对象具有除一个以外的所有props键)。
使用 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>;
}
如果你有很多你不想要的 props,...rest
例如 defaultProps,把它们都写两次会很烦人。相反,您可以通过对当前props的简单循环自己创建它,如下所示:
let rest = {};
Object.keys(this.props).forEach((key, index) => {
if(!(key in MyComponent.defaultProps))
rest[key] = this.props[key];
});
试试这个:
function removeProps(obj, propsToRemove) {
let newObj = {};
Object.keys(obj).forEach(key => {
if (propsToRemove.indexOf(key) === -1)
newObj[key] = obj[key]
})
return newObj;
}
const obj = {nome: 'joao', tel: '123', cidade: 'goiania'}
const restObject = removeProps(obj, ['cidade', 'tel'])
console.log('restObject',restObject)
restObject
{
nome:"joao"
}