Skip to content

Commit

Permalink
fix(grid): justify and align properties are not reactive for Row (#39704
Browse files Browse the repository at this point in the history
)

Co-authored-by: 陈小祥 <xiaoxiang930601@163.com>
  • Loading branch information
candy4290 and candy4290 committed Dec 21, 2022
1 parent b5f27c8 commit e5c60c8
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 2 deletions.
27 changes: 25 additions & 2 deletions components/grid/__tests__/index.test.tsx
@@ -1,9 +1,10 @@
import React from 'react';
import React, { useState } from 'react';
import { act } from 'react-dom/test-utils';
import { Col, Row } from '..';
import mountTest from '../../../tests/shared/mountTest';
import rtlTest from '../../../tests/shared/rtlTest';
import useBreakpoint from '../hooks/useBreakpoint';
import { render } from '../../../tests/utils';
import { render, fireEvent } from '../../../tests/utils';

// Mock for `responsiveObserve` to test `unsubscribe` call
jest.mock('../../_util/responsiveObserve', () => {
Expand Down Expand Up @@ -209,4 +210,26 @@ describe('Grid', () => {
const { container: container3 } = render(<Row justify={{ lg: 'center' }} />);
expect(container3.innerHTML).not.toContain('ant-row-center');
});

// https://github.com/ant-design/ant-design/issues/39690
it('Justify and align properties should reactive for Row', () => {
const ReactiveTest = () => {
const [justify, setjustify] = useState<any>('start');
return (
<>
<Row justify={justify} align="bottom">
<div>button1</div>
<div>button</div>
</Row>
<span onClick={() => setjustify('end')} />
</>
);
};
const { container } = render(<ReactiveTest />);
expect(container.innerHTML).toContain('ant-row-start');
act(() => {
fireEvent.click(container.querySelector('span')!);
});
expect(container.innerHTML).toContain('ant-row-end');
});
});
3 changes: 3 additions & 0 deletions components/grid/row.tsx
Expand Up @@ -39,6 +39,9 @@ function useMergePropByScreen(oriProp: RowProps['align'] | RowProps['justify'],
const [prop, setProp] = React.useState(typeof oriProp === 'string' ? oriProp : '');

const clacMergeAlignOrJustify = () => {
if (typeof oriProp === 'string') {
setProp(oriProp);
}
if (typeof oriProp !== 'object') {
return;
}
Expand Down

0 comments on commit e5c60c8

Please sign in to comment.