为了账号安全,请及时绑定邮箱和手机立即绑定

dvajs中模态框的状态应该放在组件内部还是model中?

dvajs中模态框的状态应该放在组件内部还是model中?

长风秋雁 2018-08-18 21:25:31
使用dva遇到添加功能,这里是点击添加按钮显示模态框的表单,但是关闭的时机如果在组件中使用state,就无法根据返回结果做判断(有些字段重复不能添加)。现在把显示、关闭的逻辑都写到了model中,这样做可以吗?部分代码:组件中:function handleAdd() {    dispatch({ type: 'user/saveAddModalVisible', payload: true }); } function handleCancel() {    dispatch({ type: 'user/saveAddModalVisible', payload: false }); }<Button onClick={handleAdd}>添加</Button><Modal     title="添加代理"     visible={addModalVisible}     onCancel={handleCancel}    >     <div>       <Form>         // ...      </Form>     </div></Modal>model中:*addChannel({ payload }, { call, put }) {  const res = yield call(addChannelReq, payload);  if (res.code === 200) {    yield put({ type: 'saveAddModalVisible', payload: false });     message.success('添加成功');   } else {     message.destroy();     message.warning(res.msg);   } },
查看完整描述

2 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

dva中的model是把redux的action和reducer放在了一起
model里的存的更多是全局的变量和数据,其实并不一定要把全部的东西都放到model里
像modal的visible或者其它这个组件自用的state,完全可以不用model,在组件里写方法用state就好了,用了model反而代码变复杂了
redux里有一句话,当你不知道要不要用redux的时候,其实就是不需要的

查看完整回答
1 反对 回复 2018-08-19
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

题主这么写是可以的~
我展示一下我一般是怎么写的吧,互相学习~
我一般都是这么写的,在model中将modal的状态方法分开写

 hideModal(state) {
            return { ...state, ModalVisible: false }
        },
 showModal(state) {
            return { ...state, ModalVisible: true }
        },

这样子在组件中只需要调用showModal和hideModal就可以了


查看完整回答
反对 回复 2018-08-19
  • 2 回答
  • 0 关注
  • 1258 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信