React Native ScrollView - 如何从另一个子组件按钮滚动到子组件?

亚瑟·阿维拉

我有一个带有 ScrollView 的结构,它是一个有 5 个孩子的父级

带有 ScrollView 的父组件

  • 组件 1
  • 组件 2
  • 组件 3
  • 组件4
  • 组件5

在 Component3 中,我有一个按钮,按下时应将父组件 ScrollView 滚动到 Component5

像这样的东西

家(家长)

export default class Home extends React.Component {      
    renderComments() {
        return this.state.dataSource.map(item =>
            <CommentDetail key={item.id} comment={item} />
        );
    }

    render() {
        return (
            <ScrollView>      
                <Component1 />
                <Component2 />
                <CentralElements  {...this.state.dataSource} scroll = {this.props.scroll} />
                <Component4 />                  
                <View>
                    {this.renderComments()}
                </View>
            </ScrollView>
        );
    }
}

CentralElements (Component3)

export default class CentralElements extends React.Component {
    constructor(props) {
        super(props);
    }
  
    goToComments= () => {
        this.props.scroll.scrollTo({x: ?, y: ?, animated: true});
     };

    render() {
        return (
            <ScrollView horizontal={true}>
                <TouchableOpacity onPress={this.goToComments}>
                    <Image source={require('../../assets/image.png')} />
                    <Text>Comments</Text>
                </TouchableOpacity>
                ...
                </TouchableOpacity>
            </ScrollView>
        );
    }
};

注释是 Component5,对如何进行父滚动有任何想法吗?我试图弄清楚我错过了什么,因为那是我第一次接触这个。

MPN7

我所做的是..
在component5中,我在主视图中调用onLayout,然后在父组件中保存xy要在单击时在组件 3 中滚动到它,我调用父函数,该函数使用 scrollview ref 滚动到之前存储的值

组件5

    export default class Component5 extends Component {

    saveLayout() {
        this.view.measureInWindow((x, y, width, height) => {
            this.props.callParentFunction(x, y)
        })
    }
    render() {
        return (
            <View ref={ref => this.view = ref} onLayout={() => this.saveLayout()}>

            </View>
        )
    }
}

组件 3

export default class Component3 extends Component {

    render() {
        return (
            <View >
                <TouchableOpacity onPress={()=>{this.props.goToComponent5()}}>

                </TouchableOpacity>
            </View>
        )
    }
}

家长:

export default class Parent extends Component {
constructor(props) {
this.goToComponent5=this.goToComponent5.bind(this)
    super(props)
    this.state = {
        x:0,
        y:0,
    }
}

    callParentFunction(x, y) {
        this.setState({ x, y })
    }

    goToComponent5(){
        this.ScrollView.scrollTo({x: this.state.x, y: this.state.y, animated: true});
    }

    render() {
        return (
            <View >
                <ScrollView ref={ref => this.ScrollView = ref}>
                    <Component1 />
                    <Component2 />
                    <Component3 goToComponent5={this.goToComponent5}/>
                    <Component4 />
                    <Component5 callParentFunction={this.callParentFunction}/>
                </ScrollView>
            </View>
        )
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

获取React Native中ScrollView的当前滚动位置

来自分类Dev

如何从React Native中的ScrollView组件获取onPress事件

来自分类Dev

如何使用React Native iOS将ListView放入ScrollView中?

来自分类Dev

React Native Android:如何删除ScrollView的“过度滚动效果”

来自分类Dev

在react-native listview / scrollview中找出滚动方向

来自分类Dev

React Native-如何测量ScrollView中内容的大小?

来自分类Dev

如何使React Native的ScrollView初始缩放不为1?

来自分类Dev

ScrollView在React Native中不以小视图高度滚动

来自分类Dev

我的按钮无法更改另一个React Native组件中的状态

来自分类Dev

单击按钮将页面向下滚动到另一个React组件

来自分类Dev

如何使用样式化组件为React Native中的最后一个子元素设置样式

来自分类Dev

如何从另一个文件获取React Native导航负载组件?

来自分类Dev

如何在React中将数据值从一个子组件传递到另一个子组件?

来自分类Dev

如何在React Native中从另一个功能组件更改一个功能组件的状态?

来自分类Dev

ScrollView无法在React Native中滚动

来自分类Dev

我如何在React Native中从另一个组件调用函数?

来自分类Dev

如何在React Native中导航到类组件中的另一个屏幕

来自分类Dev

如何在React Native中导航到类组件中的另一个屏幕

来自分类Dev

如何在React Native中导航到类组件中的另一个屏幕

来自分类Dev

如何基于事件使用React将一个子react / html组件替换为另一个子组件?

来自分类Dev

打开键盘时,React Native ScrollView不滚动

来自分类Dev

React Native,从一个组件导航到另一个组件

来自分类Dev

React Native、ScrollView 分页事件

来自分类Dev

onPull React Native ScrollView

来自分类Dev

如何在 React Native 中将 ScrollView 与第三方组件一起使用?

来自分类Dev

如何在另一个文件中获取组件的状态 react native

来自分类Dev

如何防止在 React-Native ScrollView 中滚动多个元素?

来自分类Dev

React Native Scrollview 与 flexGrow 不滚动

来自分类Dev

如何在 React Native 的另一个组件中使用 API 获取状态

Related 相关文章

  1. 1

    获取React Native中ScrollView的当前滚动位置

  2. 2

    如何从React Native中的ScrollView组件获取onPress事件

  3. 3

    如何使用React Native iOS将ListView放入ScrollView中?

  4. 4

    React Native Android:如何删除ScrollView的“过度滚动效果”

  5. 5

    在react-native listview / scrollview中找出滚动方向

  6. 6

    React Native-如何测量ScrollView中内容的大小?

  7. 7

    如何使React Native的ScrollView初始缩放不为1?

  8. 8

    ScrollView在React Native中不以小视图高度滚动

  9. 9

    我的按钮无法更改另一个React Native组件中的状态

  10. 10

    单击按钮将页面向下滚动到另一个React组件

  11. 11

    如何使用样式化组件为React Native中的最后一个子元素设置样式

  12. 12

    如何从另一个文件获取React Native导航负载组件?

  13. 13

    如何在React中将数据值从一个子组件传递到另一个子组件?

  14. 14

    如何在React Native中从另一个功能组件更改一个功能组件的状态?

  15. 15

    ScrollView无法在React Native中滚动

  16. 16

    我如何在React Native中从另一个组件调用函数?

  17. 17

    如何在React Native中导航到类组件中的另一个屏幕

  18. 18

    如何在React Native中导航到类组件中的另一个屏幕

  19. 19

    如何在React Native中导航到类组件中的另一个屏幕

  20. 20

    如何基于事件使用React将一个子react / html组件替换为另一个子组件?

  21. 21

    打开键盘时,React Native ScrollView不滚动

  22. 22

    React Native,从一个组件导航到另一个组件

  23. 23

    React Native、ScrollView 分页事件

  24. 24

    onPull React Native ScrollView

  25. 25

    如何在 React Native 中将 ScrollView 与第三方组件一起使用?

  26. 26

    如何在另一个文件中获取组件的状态 react native

  27. 27

    如何防止在 React-Native ScrollView 中滚动多个元素?

  28. 28

    React Native Scrollview 与 flexGrow 不滚动

  29. 29

    如何在 React Native 的另一个组件中使用 API 获取状态

热门标签

归档