如何在无状态ScrollViewRTL组件中使用ref?

时间:2019-03-03 20:07:48

标签: javascript reactjs react-native ref stateless

实际上,我想为我的ScrollViewRTL项目制作一个通用react-native组件。我要处理的主要目标是ScrollView组件的 RTL 情况。但是具有任何属性的ScrollView组件都不会显示RTL情况,请注意以下代码:

import React, { memo } from 'react';
import PropTypes from 'prop-types';
import { StyleSheet, ScrollView } from 'react-native';
import { variables } from 'utils/constants/theme';
import { styleJoiner } from 'utils/helpers';

const ScrollViewRTL = ({ children, style, contentContainerStyle, ...rest }) => (
  <ScrollView
    {...rest}
    style={styleJoiner(styles.wrapper, style)}
    horizontal
    showsHorizontalScrollIndicator={false}
    contentContainerStyle={styleJoiner(
      styles.contentContainer,
      contentContainerStyle
    )}
  >
    {children}
  </ScrollView>
);

ScrollViewRTL.propTypes = {
  children: PropTypes.oneOfType([
    PropTypes.element,
    PropTypes.arrayOf(PropTypes.element),
    PropTypes.func
  ]).isRequired,
  style: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),
  contentContainerStyle: PropTypes.oneOfType([
    PropTypes.object,
    PropTypes.array
  ])
};

ScrollViewRTL.defaultProps = {
  style: undefined,
  contentContainerStyle: undefined
};

const styles = StyleSheet.create({
  contentContainer: {
    flexDirection: 'row-reverse',
    minWidth: '100%',
    paddingHorizontal: variables.gutter
  },
  wrapper: {
    flexGrow: 0
  }
});

export default memo(ScrollViewRTL);

但这是LTR情况的开始,对于下面的示例,我设置了30个从零开始到29的文本,您可以看到它位于RTL的末尾,这意味着它位于LTR的开始。 LTR情况:

enter image description here

所以我决定将其滚动到LTR情况的结尾,似乎是在RTL情况的开始,但是我不想仅使用ref就使用Component或PureComponent,我想使用{{ 1}}在上述无状态组件中,我该怎么做?

0 个答案:

没有答案