2016-10-28 100 views
1

我從HomeLayout中將其重定向到MobileLocalityLayout,其中有一個方法selectLocality,通過單擊名爲「set locality」的鏈接將locality值設置爲LocalityStore。現在,只要我選擇的地方,我重定向到HomeLayout,並再次,如果按本地按鈕,選擇本地後,我得到以下錯誤:React Flux Uncaught TypeError:_LocalityStore2.default.setSelectedLocality不是函數

Uncaught TypeError: _LocalityStore2.default.setSelectedLocality is not a function 

然而LocalityStore具有的功能setSelectedLocality

代碼段:

HomeLayout:

<span class='selectLocalityBtn'><Link to="/selectLocality">Set Locality</Link></span> 

MobileLocalityLayout:

selectLocality(val){ 
     this.setState({ 
      selectedLocality : val 
     }); 
     LocalityStore.setSelectedLocality(val); 
     browserHistory.push("/"); 
    } 

LocalityStore:

setSelectedLocality(locality){ 
    this.setSelectedLocality = locality; 
} 

我是否以錯誤的方式實現了流量?我不明白什麼是_LocalityStore2,因爲我有LocalityStore而不是LocalityStore2。請幫忙。

回答

0

你有一個錯字在你的代碼

setSelectedLocality(locality){ 
    this.setSelectedLocality = locality; 
} 

請this.selectedLocality

取代this.setSelectedLocality
0

它看起來(按名稱約定),就像你在一個類上調用setSelectedLocality而不是實例。導出LocalityStore時創建它的一個實例,然後調用它的方法。像這樣:

const localityStore = new LocalityStore(); 
dispatcher.register(localityStore.handler.bind(localityStore)); 
export default localityStore; 

關於此名稱更改(LocalityStore to _LocalityStore2)。我猜你正在使用babel-react-loader或類似的東西來將你的代碼轉換成ES5。這會導致對原始代碼進行一些更改,但這不是問題。

+0

是的,我用巴貝爾transpiler –

相關問題