Phản hồi đề xuất cho Transfer Props. Khéo léo!Đạo cụ truyền tải phản ứng ngoại trừ một số
Tôi làm cách nào để chuyển tất cả trừ một?
render: function(){
return (<Cpnt {...this.propsButOne}><Subcpnt one={this.props.one} /></Cpnt>);
}
Phản hồi đề xuất cho Transfer Props. Khéo léo!Đạo cụ truyền tải phản ứng ngoại trừ một số
Tôi làm cách nào để chuyển tất cả trừ một?
render: function(){
return (<Cpnt {...this.propsButOne}><Subcpnt one={this.props.one} /></Cpnt>);
}
Bạn có thể sử dụng kỹ thuật sau đây để tiêu thụ một số các đạo cụ và vượt qua trên còn lại:
render() {
var {one, ...other} = this.props;
return (
<Cpnt {...other}>
<Subcpnt one={one} />
</Cpnt>
);
}
Đã xảy ra sự cố với vấn đề này và không thể giải quyết vấn đề này. Thông báo lỗi: 'Xây dựng mô-đun không thành công: Cú phápError: Mã thông báo không mong đợi (7:19)' và thông báo lỗi đã làm nổi bật toán tử spread trong mã. 'var {linkType, ... other} = this.props;' – user2498045
Đây là giải pháp http://stefan.magnuson.co/articles/frontend/using-es7-spread-operator-with-webpack/ –
bạn biết điều gì sẽ xảy ra nếu bạn vượt qua cùng một prop một cách rõ ràng? EG, nếu 'other' chứa một prop gọi là 'myProp' và bạn đã làm một cái gì đó như thế này: '
Điều bạn cần làm là tạo bản sao đối tượng đạo cụ và xóa (các) khóa bạn không muốn. Cách dễ nhất là sử dụng omit
từ lodash
nhưng bạn cũng có thể viết một đoạn mã cho điều này (tạo một đối tượng mới có tất cả các phím của đạo cụ ngoại trừ một phím).
Với omit (một vài lựa chọn ở phía trên, tùy thuộc vào những gì gói bạn nhập/ES hương vị bạn sử dụng):
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>;
}
Điều này có vẻ sạch hơn so với giải pháp được chấp nhận. –
Nếu bạn có rất nhiều đạo cụ bạn không muốn trong ...rest
ví dụ defaultProps, nó có thể gây phiền nhiễu để viết tất cả chúng hai lần. Thay vào đó, bạn có thể tự tạo bản thân bằng một vòng lặp đơn giản trên các đạo cụ hiện tại như:
let rest = {};
Object.keys(this.props).forEach((key, index) => {
if(!(key in MyComponent.defaultProps))
rest[key] = this.props[key];
});
chỉ cần vượt qua tất cả? không vấn đề gì! – DoubleU23