2016-09-22 14 views
5

Tôi đang tìm hiểu về HOC từ số article này nhưng không thấy procmethod trước đây. Những gì có đề cập đến?proc và phương pháp trong phản ứng javascript là gì?

function refsHOC(WrappedComponent) { 
    return class RefsHOC extends React.Component { 
    proc(wrappedComponentInstance) { 
     wrappedComponentInstance.method() 
    } 

    render() { 
     const props = Object.assign({}, this.props, {ref: this.proc.bind(this)}) 
     return <WrappedComponent {...this.props}/> 
    } 
    } 
} 

Trả lời

6

this.proc đề cập đến phương pháp

proc(wrappedComponentInstance) { 
    wrappedComponentInstance.method() 
} 

wrappedComponentInstance.method() là một chỉ là một ví dụ về cách gọi một phương pháp tùy ý trên thành phần bao bọc. Bài báo cho biết:

Trong ví dụ sau chúng tôi khám phá làm thế nào để truy cập vào các phương pháp thẩm và sơ thẩm bản thân của WrappedComponent qua refs


Vì vậy, không có bất cứ điều gì để làm với React đặc biệt.

+0

proc làm gì? nó chỉ trả về một tham chiếu đến phương thức()? Tôi chưa bao giờ nghe về nó hoặc đọc về nó trước đây. – stackjlei

+2

Bạn đang suy nghĩ quá mức về điều này. 'RefsHOC' là một lớp. Lớp đó định nghĩa một phương thức 'proc'. Một thể hiện của lớp có thể truy cập phương thức thông qua 'this.proc'. Đây là một ví dụ đơn giản khác: 'class Foo {bar() {} baz() {this.bar()}'. Mỗi instance của 'Foo' sẽ có các phương thức' bar' và 'baz'. 'baz' gọi' bar' qua 'this.bar()'. Hoặc đơn giản hơn: 'var foo = {bar() {}, baz() {this.bar()}}'. 'foo' là một đối tượng có hai phương thức. 'foo.baz()' cũng sẽ gọi 'foo.bar' qua' this.bar() '. –

+2

* "proc làm gì?" * Nó có trong mã: 'wrapComponentInstance.method()'. Nó gọi phương thức 'method' trên đối số được truyền vào. –

2

Tôi đã xem qua cùng một bài viết này và đã bị nhầm lẫn lúc đầu. Tôi đã phá vỡ nó ra thành cú pháp ES6 để làm cho mọi thứ rõ ràng hơn cho người dùng cũng bị nhầm lẫn.

export default WrappedComponent => 
    class extends Component { 

    //Proc function that gets called 
    proc = wrappedComponentInstance => { 
     wrappedComponentInstance.method() 
    } 

    render() { 
     const props = { ...this.props, ...{ ref: this.proc } } 
     return <WrappedComponent {...props} /> 
    } 
} 
Các vấn đề liên quan