V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
peachplum
V2EX  ›  前端开发

求助: ant design (antd) 的 Modal 组件问题 ,reducers 返回了新的 state 状态后 modal 关掉又打开

  •  
  •   peachplum · 2017-02-19 19:36:15 +08:00 · 15018 次点击
    这是一个创建于 1750 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位大神: 纠结半天的问题了,求助:

    框架是 ant-design 想实现的效果: 在 modal 中有一个 form,想在填写 userNo 的时候,ajax 去查看是否有重复的工号 相关的 modal 部分:

    function onValueChange(props, value) {
        let {user_no}=value;
        if (user_no) {
    	    props.OnValidateUserNo(user_no);
        }
     }
    export default Form.create({onValuesChange: onValueChange})(modal)
    

    视图中,model 作为一个子组件放在 User 中:

    const UserModalGen = () =>
    	<UserModal {...userModalProps} />
    
    return (
    	<div className='content-inner'>
    		<UserSearch {...userSearchProps} />
    		<UserList {...userListProps} />
    		<UserModalGen />
    	</div>
    )
    

    OnValidateUserNo 方法就在 userModalProps 中传进去的. 具体:

    const userModalProps = {
    	item: modalType === 'create' ? {} : currentItem,
    	type: modalType,
    	visible: modalVisible,
    	user_no_validating: user_no_validating,
    	OnValidateUserNo({value}){
    		dispatch({
    			type: 'users_validate/validate_user_no',
    			payload: {user_no: value}
    		})
    	},
    }
    

    对应的:reducer 和 effects:

    effects: {
    	*validate_user_no({payload}, {select, call, put}){
    		yield put({type: 'showValidating'})
    		console.warn(payload)
    	}
    },
    
    reducers: {
    	showValidating (state) {
    		return {...state,  user_no_validating: "validating"};
    	},
    }
    

    ` 就在这个地方,一旦 return 出去新的 state,Modal 就会关掉重开一次,state 不变的情况下,modal 怎么会被重新渲染呢??,检查过 modal 的显示和隐藏 state 始终没变过.

    求指教啊啊...

    2 条回复    2018-11-29 14:31:18 +08:00
    peachplum
        1
    peachplum  
    OP
       2017-02-20 08:55:57 +08:00
    好吧 还是自己解决了
    henshang
        2
    henshang  
       2018-11-29 14:31:18 +08:00
    你怎么解决的,我也碰到了这个问题
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4055 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 02:07 · PVG 10:07 · LAX 18:07 · JFK 21:07
    ♥ Do have faith in what you're doing.