我目前正在編寫一個應用程序,反應原生版本0.7.1
。我正在嘗試編寫聊天組件。React Native - 獲取當前組件的高度,反向滾動視圖
通過聊天,您通常會在底部輸入文字,並將消息從屏幕底部推到頂部。此外,當聊天畫面初始化時,它會在屏幕底部進行初始化,並允許用戶向上滾動。我想在react-native中實現相同的行爲。 ScrollView的當前行爲將項目從頂部推到底部。我嘗試了幾個不同的解決方案:
- 第一種解決方案涉及到嘗試測量ScrollView組件。這個概念是,如果我知道視圖的高度,我可以
this.refs.messages.scrollTo(contentHeight)
。有人提到以下功能:this.refs.messages.measure(callbackWithTheseParams((a, b, width, height, px,py))
。但度量函數原來是未定義的。 - 第二種方法涉及包https://www.npmjs.com/package/react-native-invertible-scroll-view。這個包實際上也正確地排序了我的數據(反向)。你可以考慮像翻轉屏幕上的像素,使得(0,0)是底部。這使我可以撥打
scrollTo(0,0)
。但是,似乎這個功能僅在0.8.0-rc中可用。我不確定的是穩定的(或者相當穩定)。
編輯 - 添加範例
我的構造函數:
componentDidMount() {
this.measureComponent()
}
// measureComponent
measureComponent() {
console.log('this gets called');
this.refs.messages.measure((ox, oy, width, height) => {
console.log(height); // does not get called.
});
}
我的渲染功能是:
return (
<ScrollView
scrollEventThrottle={200}
ref="messages"
style={styles.container}>
<View style={styles.messages}>
{messages.map(this.renderMessage)}
</View>
<TextInput
style={styles.newMessage}
value={this.state.message}
onSubmitEditing={this.sendMessage}
onChangeText={(text) => this.setState({message: text})} />
</ScrollView>
);
謝謝你 - 收到一個錯誤,試圖測量佈局,但o ffset維度爲NaN – Lfa
我可以調用measure而不是measureLayout,但是使用this.refs.messages.getScrollResponder()(我的scrollview)。回調是所有參數全部返回0。 – Lfa