Я рендерил много текстовых компонентов и сохранял позиции (чтобы прокрутить их), но я хотел бы улучшить производительность, «связав» ее с помощью отката (и открыты для других предложений, которые могут повысить производительность).
...
import debounce from 'lodash/debounce'
...
class ContextProvider extends Component {
....
setContentPosition = (layout, key) => {
const contentPos = { ...this.state.contentPos }
contentPos[key] = layout.nativeEvent.layout.y
// TODO: make it debounce https://stackoverflow.com/questions/23123138/perform-debounce-in-react-js
this.setState({ contentPos }, () => console.log('contPos updated'))
}
...
render() {
return (
<Provider
value={{
setContentPosition: this.setContentPosition,
}}
>
{this.props.children}
</Provider>
)
}
}
Я попробовал пару разных комбинаций, но без удачи.Ожидал, что это сработает:
...
render() {
return (
<Provider
value={{
setContentPosition: debounce(this.setContentPosition, 200),
}}
>
{this.props.children}
</Provider>
)
}
}
Выдает следующую ошибку:
Обновление 01
Следующее изменение (для contentPos[key]
)
setContentPosition = (layout, key) => {
const contentPos = { ...this.state.contentPos }
//console.log(layout.nativeEvent)
contentPos[key] = layout.nativeEvent
// TODO: make it debounce https://stackoverflow.com/questions/23123138/perform-debounce-in-react-js
this.setState({ contentPos }, () => {
console.log('contPos updated')
})
}
отображает это предупреждение вместо:
Позиция должна использоватьсядля прокрутки к текстовому компоненту (при поиске) и у меня есть тестовый код, который прокручивается до некоторого Text
компонента - работает на iOS, но не на Android?