mirror of
https://github.com/ant-design/ant-design.git
synced 2025-06-12 04:13:13 +08:00
fix: Affix does not refix on offset prop changes
This commit is contained in:
parent
4b5d54671a
commit
5903fdb19f
@ -100,4 +100,19 @@ describe('Affix Render', () => {
|
|||||||
scrollTo(0);
|
scrollTo(0);
|
||||||
expect(wrapper.instance().affix.state.affixStyle).not.toBe(null);
|
expect(wrapper.instance().affix.state.affixStyle).not.toBe(null);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('updatePosition when offsetTop changed', () => {
|
||||||
|
document.body.innerHTML = '<div id="mounter" />';
|
||||||
|
|
||||||
|
wrapper = mount(<AffixMounter offsetTop={0} />, { attachTo: document.getElementById('mounter') });
|
||||||
|
jest.runAllTimers();
|
||||||
|
|
||||||
|
scrollTo(100);
|
||||||
|
expect(wrapper.instance().affix.state.affixStyle.top).toBe(0);
|
||||||
|
wrapper.setProps({
|
||||||
|
offsetTop: 10,
|
||||||
|
});
|
||||||
|
jest.runAllTimers();
|
||||||
|
expect(wrapper.instance().affix.state.affixStyle.top).toBe(10);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
@ -16,16 +16,46 @@ The simplest usage.
|
|||||||
````jsx
|
````jsx
|
||||||
import { Affix, Button } from 'antd';
|
import { Affix, Button } from 'antd';
|
||||||
|
|
||||||
|
class Demo extends React.Component {
|
||||||
|
state = {
|
||||||
|
top: 10,
|
||||||
|
bottom: 10,
|
||||||
|
}
|
||||||
|
render() {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<Affix offsetTop={this.state.top}>
|
||||||
|
<Button
|
||||||
|
type="primary"
|
||||||
|
onClick={() => {
|
||||||
|
this.setState({
|
||||||
|
top: this.state.top + 10,
|
||||||
|
});
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Affix top
|
||||||
|
</Button>
|
||||||
|
</Affix>
|
||||||
|
<br />
|
||||||
|
<Affix offsetBottom={this.state.bottom}>
|
||||||
|
<Button
|
||||||
|
type="primary"
|
||||||
|
onClick={() => {
|
||||||
|
this.setState({
|
||||||
|
bottom: this.state.bottom + 10,
|
||||||
|
});
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Affix bottom
|
||||||
|
</Button>
|
||||||
|
</Affix>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ReactDOM.render(
|
ReactDOM.render(
|
||||||
<div>
|
<Demo />,
|
||||||
<Affix>
|
|
||||||
<Button type="primary">Affix top</Button>
|
|
||||||
</Affix>
|
|
||||||
<br />
|
|
||||||
<Affix offsetBottom={0}>
|
|
||||||
<Button type="primary">Affix bottom</Button>
|
|
||||||
</Affix>
|
|
||||||
</div>,
|
|
||||||
mountNode
|
mountNode
|
||||||
);
|
);
|
||||||
````
|
````
|
||||||
|
@ -233,6 +233,12 @@ export default class Affix extends React.Component<AffixProps, AffixState> {
|
|||||||
// Mock Event object.
|
// Mock Event object.
|
||||||
this.updatePosition({});
|
this.updatePosition({});
|
||||||
}
|
}
|
||||||
|
if (
|
||||||
|
this.props.offsetTop !== nextProps.offsetTop ||
|
||||||
|
this.props.offsetBottom !== nextProps.offsetBottom
|
||||||
|
) {
|
||||||
|
this.updatePosition({});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillUnmount() {
|
componentWillUnmount() {
|
||||||
|
Loading…
Reference in New Issue
Block a user