0

我正在使用 React Native 构建聊天消息页面。

我有以下代码:

import React from 'react';
import {View,ScrollView,Text} from 'react-native';
import {Button} from 'native-base';

export default class MatchContact extends React.Component {
  constructor(props){
  super(props);
  this.scrollRef = React.createRef();
}

state = {
  messages: ['message1','message2','message3','message4']
}

handleScroll(){
  this.scrollRef.scrollToEnd()
}

render(){
  return(
    <View>
      <Button onPress={()=>this.handleScroll()}>
        <Text> Scroll To Bottom </Text>
      </Button>
      <ScrollView ref={this.scrollRef}>
         {this.state.messages.map(message => (
             <Text> {message} <Text/>
          ))}
      </ScrollView>
     </View>
  )
}

因此,当我按下按钮“滚动到底部”时,我希望 ScrollView 滚动到页面末尾,但出现错误:

TypeError:_this5.scrollRef.scrollToEnd 不是函数。(在 '_this5.scrollRef.scrollToEnd()' 中,'_this5.scrollRef.scrollToEnd' 未定义)

4

2 回答 2

0

尝试如下获取 ref

<ScrollView  
keyboardShouldPersistTaps="handled"
ref={(ref) => this.scrollView = ref}>
于 2020-03-26T13:49:01.807 回答
0

基本上你有两个选择:

选项1:

使用this.scrollRef.current

handleScroll(){
  this.scrollRef.current.scrollToEnd()
}

或者

选项2:

<ScrollView ref={ref => this.scrollRef = ref}>
....
</ScrollView>
于 2020-03-26T14:01:42.227 回答