2016-10-28 6 views
1

У меня есть HomeLayout, откуда я перенаправляется на MobileLocalityLayout, у которого есть метод selectLocality, чтобы установить локальность для LocalityStore при нажатии ссылки, называемой «set locality». Теперь, как только я выбираю локальность я перенаправлен на 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.setSelectedLocality с this.selectedLocality

0

Он выглядит (по условному обозначению имен), как вы вызываете setSelectedLocality для класса, а не для экземпляра. Экспортируя LocalityStore, создайте экземпляр, а затем вызовите на него методы. Например:

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

Об этом изменении имени (LocalityStore - _LocalityStore2). Я думаю, вы используете babel-react-loader или что-то в этом роде, чтобы перевести код на ES5. Это вызывает некоторые изменения в исходном коде, но это не проблема.

+0

Да Я использую Бабель transpiler –