antd of react 使用时遇到的坑

526 阅读1分钟

1、在antd中,Select组件在Form中使用,并设置initialValue后,Select的placeholder就失效了:

<Form.Item label="测试">          
{getFieldDecorator('test', {            
initialValue: '',          
})(            
<Select  placeholder='请在这里选择'>              
<Option value="jack">Jack</Option>            
</Select>          
)}
</Form.Item>

解决方案:initialValue: isTrue ? 'xxxx' : undefined,

类似的还有,form中的日期datePicker相关的日期为空值时,初始值要用 null

2、Tree组件自定义title,包含Checkbox时,title中的checkbox只能点击一次。

还未解决的疑问:为什么点击的onClick就不会有这个问题呢?

相关源代码: 
<Tree      
checkable      
onExpand={onExpand}      
expandedKeys={expandedKeys}      
autoExpandParent={autoExpandParent}      
onCheck={onCheck}      
checkedKeys={checkedKeys}      
onSelect={onSelect}      
selectedKeys={selectedKeys}      
treeData={treeData}      
titleRender={onTitleRender}    />

相关方法:
const onTitleRender = (nodeData) => {    
return <div >      
{nodeData.title}      
<a style={{ margin: '0 15px'}} onClick={handleClickRename}>重命名</a>      
<Checkbox onChange={handleChangeCheck}/>排序    
</div>  
}

const handleChangeCheck = (e) => {
      e.stopPropagation()
      console.log(e) // 这里只能进来打印一次  }

解决title中checkbox点击问题:在自定义title的那个外层div中设置阻止冒泡的方法。

const onTitleRender = (nodeData) => {    
return <div onClick={e => e.stopPropagation()}>      
{nodeData.title}      
<a style={{ margin: '0 15px'}} onClick={handleClickRename}>重命名</a>      
<Checkbox onChange={handleChangeCheck}/>排序    
</div>  }