2017-03-28 137 views
0

在調度動作反應組件我做了一個功能爲onClick事件

handleClick(event, key, value) { 
    event.preventDefault() 
    this.setState({ 
     query:"", 
     key:key, 
     value:value 
    }); 
    this.props.onClick(this.state); 
    console.log("key...." + key ); 
    console.log("val...." + value); 
    } 

這應該被稱爲當我點擊一個鏈接

onClick={(e) => this.handleClick(e, {key}, {el}) } 

而且使用連接我派遣行動如下

export const mapDispatchToProps = (dispatch) => ({ 

    onClick: (query, key, value) => dispatch(onSearch(query,key, value) 


) 
}); 

但在搜索方法的關鍵和值來作爲undefined.But在handleClick功能我我越來越

key....[object Object] 
val....[object Object] 
+0

是'key'和'el'界定?是否定義了「onSearch」函數? – Aron

+0

是的,他們是被定義的。我需要發佈也是? –

+0

不,但請嘗試'console.log({key,val})'。這樣,你應該能夠看到實際對象 – Aron

回答

1

鍵和值將是未定義的。您需要在setState的回調函數上調用props方法,因爲在調用setState之後您不會獲得更新的狀態值。

handleClick(event, key, value) { 
     event.preventDefault() 
     this.setState({ 
      query:"", 
      key:key, 
      value:value 
     },()=>{ 

      this.props.onClick(this.state); 
     console.log("key...." + key ); 
     console.log("val...." + value); 
    }); 

     } 
0

您調用'onClick'函數的方式是錯誤的,現在您只傳遞一個參數而不是三個。

應該這樣調用

this.props.onClick(query, key, value);