我在我正在使用的应用程序上使用React-Flux而且我已经碰壁了,所以我必须确保到目前为止我正在使用所有内容。
我有一个仅用于阅读目的的json文件。它永远不应动态变化。我从我在AppActions文件中执行的Ajax请求中获取文件数据。到现在为止还挺好。现在我正在尝试使用存储的数据。我的问题是这样的:在AppStore文件中我应该向相应的case添加emitChange事件吗?我该如何管理只读文件?
当我尝试使用我正在构建的组件中的数据并且如果我在componentWillMount
和componentWillUnmount
函数中没有使用事件监听器时,我发现了这一切。每次刷新页面时存储的数据。
const AppStore = new AppStoreClass();
AppStore.dispatchToken = AppDispatcher.register(action =>{
switch(action.actionType){
case AppConstants.GET_NAMES:
setNames(action.names);
AppStore.emitChange();
break;
}
});
export default AppStore;
这是我使用只读数据的Nameday
组件。
class Nameday extends Component {
constructor(){
super();
this.state = {
saints: AppStore.getNames(),
}
this.onChange = this.onChange.bind(this);
}
componentWillMount(){
AppStore.addChangeListener(this.onChange);
}
componentDidMount(){
AppActions.getNames();
}
onChange(){
this.setState({
saints: AppStore.getNames(),
});
}
componentWillUnmount(){
AppStore.removeChangeListener(this.onChange);
}
render() {
let dates = [];
this.state.saints.map((saint, i) => {
saint.names.map((name, j) => {
if (name === firstName) {
dates.push(saint.date);
}
return dates;
});
return null;
});
let option = ....
return (
option
);
}
}