2017-07-18 87 views
1

我在有狀態的React組件中有一個函數,我得到的是Proxy,而不是我實際期望的函數參數。React函數參數是一個代理?

這是怎麼回事?我期望在我的日誌中看到hello world,但是我卻看到:

這是什麼?代理{dispatchConfig:對象,_targetInst:構造函數,nativeEvent: 對象,類型:未定義,目標:196 ...} [[處理程序]:對象[[目標] :ResponderSyntheticEvent [[IsRevoked]]:假

class MyComponent extends Component { 

state={} 

toggleModal = (A) => { 
    console.log('what is this?', A) 
    this.setState((prevState, props) => { 
     return { openShippingModal: !prevState.openShippingModal }; 
    }); 
    } 

anotherFunctionInMyComponent = selection => { 
    ///do stuff 
    this.toggleModal('hello world'); 
    }; 

componentDidMount =() => { 
/* do sutff */ 
} 

render(){ 
//return stuff 
} 

回答

1

答案:我不僅將toggleModal傳遞給anotherFunctionInMyComponent,而且傳遞給onPress支柱,並使其成爲一個綜合事件。我忘了onPress道具,所以控制檯日誌實際上是從那裏而不是anotherFunctionInMyComponent。所以在意識到我能夠將參數傳遞給onPress的預期功能後。

1

React使用「合成事件」系統來平滑不同瀏覽器中事件處理之間的差異。如果它是標準的瀏覽器事件對象,即使用A.target.value或類似的東西,通常可以處理該參數。

欲瞭解更多信息,請參閱反應文檔Handling EventsSyntheticEvent API reference

現在,看你的例子,我am有點困惑發生了什麼事情。基於該片段,是的,我期望A將是字符串「hello world」。如果你能展示更多的代碼,可能會有更多的幫助。

+0

我認爲你說的是​​某種合成事件,但是'A.target.value'返回undefined,'A.type'返回272.我添加了更多的代碼來幫助你查看組件的結構。 – Turnipdabeets