Skip to content

Commit 79a88a4

Browse files
committed
fix: check behavior with lazy load
1 parent b995675 commit 79a88a4

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

src/Tree.jsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,8 @@ class Tree extends React.Component {
126126
newState.expandedKeys = expandedKeys;
127127
}
128128

129-
const checkedKeys = nextProps.checkedKeys !== props.checkedKeys ?
130-
this.calcCheckedKeys(nextProps, true) : undefined;
129+
const checkedKeys = nextProps.checkedKeys !== props.checkedKeys || props.loadData ?
130+
this.calcCheckedKeys(nextProps, true) : undefined;
131131
if (checkedKeys) {
132132
newState.checkedKeys = checkedKeys.checkedKeys;
133133
newState.halfCheckedKeys = checkedKeys.halfCheckedKeys;
@@ -478,7 +478,8 @@ class Tree extends React.Component {
478478
return { checkedKeys: [], halfCheckedKeys: [] };
479479
}
480480

481-
let checkedKeys = props.checkedKeys || (isNotInit ? undefined : props.defaultCheckedKeys);
481+
let checkedKeys = props.checkedKeys ||
482+
(isNotInit && !props.loadData ? undefined : props.defaultCheckedKeys);
482483
if (!checkedKeys) {
483484
return undefined;
484485
}

tests/Tree.spec.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,24 @@ describe('Tree', () => {
317317
expect(checkedKeys).toEqual(['0-0-1', '0-0-2', '0-0-3', '0-0']);
318318
});
319319

320+
it('check dynamic children when their parent is checked', () => {
321+
function mockLoadData() {}
322+
const wrapper = mount(
323+
<Tree checkable defaultCheckedKeys={['0-0']} loadData={mockLoadData}>
324+
<TreeNode title="parent 1" key="0-0" />
325+
</Tree>
326+
);
327+
wrapper.setProps({
328+
children: (
329+
<TreeNode title="parent 1" key="0-0">
330+
<TreeNode title="leaf 1" key="0-0-0" />
331+
<TreeNode title="leaf 2" key="0-0-1" />
332+
</TreeNode>
333+
),
334+
});
335+
expect(wrapper.state('checkedKeys')).toEqual(['0-0-0', '0-0-1', '0-0']);
336+
});
337+
320338
describe('strictly', () => {
321339
it('checks strictly', () => {
322340
const wrapper = mount(

0 commit comments

Comments
 (0)