【发布时间】:2015-11-19 21:22:25
【问题描述】:
我是新手,我正在为我的数据模型使用状态。
我有一个通过状态显示用户个人资料图片的菜单。这是状态,因为用户可以更改他的个人资料图片。
我希望菜单从左侧滑入,最初是隐藏的。因此,我也想将菜单的打开/关闭状态添加为状态。
我使用的是标准通量模式。
以下是相关代码:
菜单.js
_onChange:function(){
this.setState({
opened: MenuStore.getMenuState(),
profilePicUrl: MenuStore.getUserPic()
})
},
componentDidMount:function(){
MenuStore.addChangeListener(this._onChange)
}
MenuStore.js
MenuStore = assign({},EventEmitter.prototype,{
emitChange: function() {
this.emit(CHANGE_EVENT);
},
addChangeListener: function(callback) {
this.on(CHANGE_EVENT, callback);
},
...(rest of class not shown)
})
MenuStore.dispatchToken = Dispatcher.register(function(action) {
switch(action.type) {
case ActionTypes.RECEIVE_USER_DATA:
_userData = action.details;
MenuStore.emitChange();
break;
case ActionTypes.TOGGLE_MENU:
_opened = !_opened;
MenuStore.emitChange();
break;
default:
// do nothing
}
});
Nav.js
toggleMenu:function(){
Actions.toggleMenu(); //in my actions.js it dispatches TOGGLE_MENU
}
render:function(){
return <div onClick={this.toggleMenu}>My Nav button</div>
}
我想我觉得奇怪的是,我正在设置用户个人资料图片的状态而没有更改。这是正确的做事方式吗?还是应该发出单独的更改事件并因此使用单独的回调,以便单独设置状态?
一个相关的问题是 React 是否会关心我是否设置了未更改的状态。即差异算法是否会忽略用户的个人资料图片,因为它没有改变,因此对 React 没有影响?或者,我在 react 中设置了状态这一事实是否隐含地告诉 React '有些东西已经改变了'?
哪种是正确的 React / Flux 模式?在一个回调中设置所有状态?还是分别设置所有状态?
【问题讨论】:
-
为什么切换菜单时需要设置头像?
标签: reactjs reactjs-flux