2016-09-22 47 views
5

我從此article瞭解HOC,但之前未看到procmethod。這些是指什麼?什麼是反應JavaScript中的proc和方法?

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}/> 
    } 
    } 
} 

回答

6

this.proc指方法

proc(wrappedComponentInstance) { 
    wrappedComponentInstance.method() 
} 

wrappedComponentInstance.method()是如何調用該包裹部件上的任意的方法只是一個例子。文章說:

在下面的例子中我們將探討如何通過裁判


所以訪問實例方法和WrappedComponent的實例本身,無論有什麼關係與React具體。

+0

proc是做什麼的?它只是返回方法()的引用嗎?我從來沒有聽說過或讀過它。 – stackjlei

+2

你正在推翻這一點。 'RefsHOC'是一個類。該類定義了一個'proc'方法。該類的一個實例可以通過'this.proc'訪問該方法。這是另一個簡化的例子:'class Foo {bar(){} baz(){this.bar()}'。每一個'Foo'的實例都會有'bar'和'baz'方法。 'baz'通過'this.bar()'調用'bar'。甚至更簡化:'var foo = {bar(){},baz(){this.bar()}}'。 'foo'是一個有兩種方法的對象。 'foo.baz()'也會通過'this.bar()'調用'foo.bar'。 –

+2

*「proc是做什麼的?」*它在代碼中:'wrappedComponentInstance.method()'。它在傳入的參數上調用'method'方法。 –

2

我碰到這篇文章,一開始感到困惑。我將其分解爲ES6語法,以便讓那些也感到困惑的用戶更清楚。

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} /> 
    } 
} 
相關問題