React Native + Flux,无响应的调度程序
Posted
技术标签:
【中文标题】React Native + Flux,无响应的调度程序【英文标题】:React Native + Flux, unresponsive dispatcher 【发布时间】:2017-02-10 16:23:22 【问题描述】:我正在构建我的第一个 react-native 应用程序。我习惯于使用 Flux MVC 模式构建 React 应用程序。我已经(正确地)将 Flux 集成到我的 React Native 项目中,但是调度程序上的 register
函数似乎完全没有响应。
Actions.js
import AppConstants from '../constants';
import AppDispatcher from '../dispatcher';
export default
setUser (user)
AppDispatcher.dispatch(
actionType: AppConstants.SET_USER,
user: user
)
Store.js
import AppDispatcher from '../dispatcher';
import AppConstants from '../constants';
import assign from 'object-assign';
import EventEmitter from 'events';
const CHANGE_EVENT = 'change';
const AppStore = assign(, EventEmitter.prototype,
emitChange ()
this.emit(CHANGE_EVENT);
,
addChangeListener (callback)
this.on(CHANGE_EVENT, callback);
,
removeChangeListener (callback)
this.removeListener(CHANGE_EVENT, callback);
,
dispatcherIndex: register(function (action)
console.log(action); // <-- No response
)
);
export default AppStore;
Dispatcher.js
import Dispatcher from 'flux';
module.exports = new Dispatcher();
我什至尝试重写 Dispatcher.js 文件,以便对 dispatch
和 register
函数进行硬编码。我收到了来自dispatch()
的回复,但从未收到来自register()
的回复。
Dispatcher2.js
import Dispatcher from 'flux';
const flux = new Dispatcher();
export function register (callback)
console.log('event!');
return flux.register(callback);
export function dispatch (action)
console.log(action);
flux.dispatch(action);
【问题讨论】:
【参考方案1】:浏览本文档。我不知道你的代码,但这样我们也可以使用通量。 http://fluxxor.com/ 。这是非常简单且易于使用的。如果这对您的问题有帮助,请接受答案。
【讨论】:
【参考方案2】:您从哪里获得商店的代码?无论如何,当您的其余属性是纯函数时,是否有理由将 dispatchIndex 作为方法调用?
冒着给你代码没有帮助的风险,这是我学会如何根据香草助焊剂的反应助焊剂文档使用商店的方法:
import Immutable from 'immutable'
import ReduceStore from 'flux/utils'
import myActionTypes from './../data/myThing/myActionTypes'
import dispatcher from '../data/dispatcher'
import AppConstant from '../data/myThing/AppConstant'
class myStore extends ReduceStore
constructor()
super(dispatcher);
getInitialState()
return Immutable.OrderedMap();
reduce(state,action)
switch(action.actionType)
case AppConstant.SET_USER:
return state.set(//data you want to set)
case AppConstant.OTHER_THING:
//additional logic
希望这是有用的,而不仅仅是我告诉你为了一些不相关的事情放弃你的代码。
【讨论】:
以上是关于React Native + Flux,无响应的调度程序的主要内容,如果未能解决你的问题,请参考以下文章
使用 React-Native-Router-Flux 在 React Native 中嵌套场景
react-native-router-flux(基础内容)
如何将 react-native-flux 与 react-drawer 一起使用