问题描述
朋友们,下午好。我有两个问题。
- 如何将Fulloffset传递给scrollToRef函数?
- 如何在对象中声明道具,以便它们在所有功能中都可用?我试图避免在每个函数中声明类似“ const {arrayOfheight} = this.props”的内容
export function withScrollToFirstError(Component: t.form.Component): React.ComponentType {
class ScrollToFirstErrorHOC extends PureComponent<OuterProps & PropsFromState,ComponentState> {
constructor(props: OuterProps & PropsFromState) {
super(props);
this.state = {
height: 0,offset: 0,};
}
componentDidUpdate() {
this.existError();
}
existError = () => {
const { currentFieldId,firstFieldId,arrayOfheight,fieldOffset,fieldErrors } = this.props;
this.calculateCoordinate();
};
calculateCoordinate = () => {
const fullOffset = offset + fieldOffset[0];
this.scrollToRef();
};
scrollToRef = () => {
if (this.props.reference) {
this.props.reference.current.scrollTo({
x: 0,y: 0,animated: true,});
}
};
解决方法
将Fulloffset传递给scrollToRef
calculateCoordinate = () => {
const fullOffset = offset + fieldOffset[0];
this.scrollToRef(fullOffset); // like this
};
scrollToRef = (fullOffset) => {
if (this.props.reference) {
this.props.reference.current.scrollTo({
x: 0,y: 0,animated: true,});
}
};
全局声明道具
export function withScrollToFirstError(Component: t.form.Component): React.ComponentType {
class ScrollToFirstErrorHOC extends PureComponent<OuterProps & PropsFromState,ComponentState> {
constructor(props: OuterProps & PropsFromState) {
super(props);
this.state = {
height: 0,offset: 0,};
// initialize here
this.arrayOfHeight = props.arrayOfHeight;
}
componentDidUpdate() {
this.existError();
}
existError = () => {
// use here like
this.arrayOfHeight;
};
}