React Native - 禁止在 1 个方向滚动

Dko*_*ova 7 javascript reactjs react-native

有没有办法在 react native (iOS) 中禁用一个 ScrollView?

我的意思是我只需要下拉刷新,但我也可以拉起来。我想禁用上拉。

  <ScrollView

                        refreshControl={
                            <RefreshControl
                                refreshing={this.state.isRefreshing}
                                onRefresh={this._onRefresh}></RefreshControl>}
                        style={styles.container} contentContainerStyle={{flex: 1}}>
Run Code Online (Sandbox Code Playgroud)

小智 0

我不知道滚动视图中有任何道具可以做到这一点。

我能想到的一种方法是创建一个状态来跟踪您是否向上滚动。然后通过执行以下操作来计算您滚动的方式:

const [scrollDisabled, setScrollDisabled] = useState(false);

let viewPosition = 0;

const disableDownwardScroll = event => {
    const currentPosition = event.nativeEvent.contentOffset.y;
    const isScrollingDown =
            currentPosition > 0 && 
            currentPosition > viewPosition
                ? true
                : false;
    setScrollDisabled(isScrollingDown);
}


return(
    <ScrollView 
        onScroll={disableDownwardScroll} 
        disableScrollViewPanResponder={scrollDisabled}>

        <Content />

    </ScrollView>
);
Run Code Online (Sandbox Code Playgroud)

我自己以前从未使用过“disableScrollViewPanResponder”道具,但我认为这正是您所需要的。