【发布时间】:2020-02-22 12:05:21
【问题描述】:
如果我以这样的形式使用 Ant Design TreeSelect 组件,一切都很好:
<Form.Item>
{getFieldDecorator('geo_objects_value', {
rules: [{
required: true,
message: 'Warning msg'
}],
})(
<TreeSelect
treeData={treeGeoObjects}
treeNodeFilterProp={'title'}
treeCheckable={true}
allowClear
showCheckedStrategy={SHOW_PARENT}
dropdownStyle={{maxHeight: 500, overflow: 'auto'}}
/>
)}
</Form.Item>
但是如果我尝试将自定义类与 Ant Design Tree 组件一起使用,它会给出警告消息:这意味着尚未收到该值。
我的自定义类:
class Demo extends React.Component {
constructor(props) {
super(props);
this.treeData = props.treeData;
this.state = {
expandedKeys: [],
autoExpandParent: true,
value: [],
};
}
onExpand = expandedKeys => {
this.setState({
expandedKeys,
autoExpandParent: false,
});
};
onCheck = value => {
this.setState({value});
this.props.value = value;
console.log('onCheck', this.props.value);
};
renderTreeNodes = data =>
data.map(item => {
if (item.children) {
return (
<TreeNode title={item.title} key={item.key} dataRef={item}>
{this.renderTreeNodes(item.children)}
</TreeNode>
);
}
return <TreeNode key={item.key} {...item} />;
});
render() {
return (
<Tree
checkable
onExpand={this.onExpand}
expandedKeys={this.state.expandedKeys}
autoExpandParent={this.state.autoExpandParent}
onCheck={this.onCheck}
checkedKeys={this.state.value}
>
{this.renderTreeNodes(this.treeData)}
</Tree>
);
}
}
在表单中使用自定义类:
<Form.Item>
{getFieldDecorator('geo_objects_value', {
rules: [{
required: true,
message: 'Warning msg'
}],
})(
<Demo treeData={treeGeoObjects}/>
)}
</Form.Item>
我做错了什么?为什么 getFieldDecorator 不能从我的类中获取值?请帮忙!
【问题讨论】: