尝试将侦听器添加到Animated Diff Clamp
in react native 以允许更改几个非动画属性。
它最初执行正确,但当屏幕滚动超出其 max 属性时会引发“非法节点”错误。
“非法节点 ID 设置为 Animated.DiffClamp 的输入”
大多数关于这方面的文章都已经过时了几年,并建议您不能将侦听器添加到 diff 钳位。但是,它确实有效(现在?),但前提是在构造函数中声明。
并非所有情况都允许它在那里,因为当不在渲染内部时它不响应状态变化。在渲染内部,它在达到最大值并抛出上面的错误之前表现良好。
Render () {
const yHeader = Animated.diffClamp(
this.props._yScroll.interpolate({
inputRange: [0, 48],
outputRange: [0, -48],
extrapolateLeft: 'clamp',
}),
-48, 0)
yHeader.addListener(
Animated.event([{value: this.value.ySearch}], {useNativeDriver: false})
)
// this.value.search has been declared in the constructor as an Animated value and is waiting to receive the props. This is not the problem!
}
如果在抛出错误时仍然滚动,您可以看到如果在 console.log 中输出其当前值,它会继续正确执行,尽管“非法”错误完全阻塞了屏幕。
- 是否可以将侦听器添加到 Diff Clamp?
- 如果没有,如果 DiffClamp 在构造函数中,为什么它会起作用?
- 假设第一个问题是否定的并且我没有在某处搞砸一些东西,这里是否有解决方法?