9
我試圖創建,保持鎖定當前滾動位置並沒有通過插入在列表頂部新項目改變FlatList。鎖定滾動位置
我創建了一個expo snack來證明我的意圖。
小吃呈現在結束與綠色項目滾動型,黑色的項目。 當應用程序啓動它滾動到列表的底部。五秒後10項被插入在頂部,和滾動位置根據這些物品的總尺寸變化。
這是世博會的小吃代碼:
import React, { Component } from 'react';
import { View, FlatList } from 'react-native';
const renderItem = ({ item }) => {
let backgroundColor;
if (item == 10) {
backgroundColor = "black"
}
else {
backgroundColor = item % 2 == 0 ? 'green' : 'blue'
}
return (
<View
style={{
width: 200,
height: 50,
backgroundColor,
margin: 10,
}}
/>
);
};
const MyList = class extends Component {
componentDidMount() {
setTimeout(() => this.ref.scrollToEnd({ animated: false }), 500);
}
render() {
return (
<FlatList
ref={r => this.ref = r}
data={this.props.data}
renderItem={this.props.renderItem}
/>
);
}
};
export default class App extends Component {
constructor(props) {
super(props);
this.state = {
items: [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 10],
};
}
componentDidMount() {
const items = [...this.state.items];
items.unshift(1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
setTimeout(() => this.setState({ items }), 5000);
}
render() {
return <MyList renderItem={renderItem} data={this.state.items} />;
}
}
我想保持鎖定滾動位置,這意味着 - 當插入滾動立場不會改變項目(或至少在某種程度上用戶不知道發生什麼意外)
有沒有辦法用FlatList和滾動型的當前API辦呢?需要實現哪些功能才能實現此功能?