Я пытаюсь использовать функцию scrollToIndex из FlatList в режиме реакции. Однако, когда я переключаю FlatList на createAnimatedComponent(FlatList), его ref становится undefined.
Есть ли способ сохранить FlatList из ref, когда я использую createAnimatedComponent?
Спасибо за твою заботу.





в настоящее время createAnimatedComponent предоставляет метод под названием getNode(), который должен работать для получения ссылки на базовый компонент.
Вот 2 примера, один со старыми ссылками, а другой с новыми.
// old ref style
class DemoComp extends Component {
componentDidMount() {
// setTimeout is needed for scrollToOffset ¯\_(ツ)_/¯
setTimeout(() => {
this.listRef.getNode().scrollToOffset({ offset: 100, animated: true });
}, 0);
}
render() {
return <Animated.FlatList ref = {r => { this.listRef = r; }} {...otherProps} />;
}
}
// new ref style
class DemoComp extends Component {
listRef = React.createRef();
componentDidMount() {
// setTimeout is needed for scrollToOffset ¯\_(ツ)_/¯
setTimeout(() => {
this.listRef.current.getNode().scrollToOffset({ offset: 100, animated: true });
}, 0);
}
render() {
return <Animated.FlatList ref = {this.listRef} {...otherProps} />;
}
}
В конце концов, в будущем createAnimatedComponent переключится на «перенаправленные ссылки», которые будут работать только с новым стилем. Но этот день еще далек от того, что все библиотеки зависят от старого стиля.
PS. Если вы читаете это в далеком будущем, вы можете проверить статус перенаправленных ссылок в createAnimatedComponent здесь: https://github.com/facebook/react-native/issues/19650
Работает, когда
offsetположительный. Когда он отрицательный,scrollToOffsetне работает.