Javascript 反应本机-子组件中的功能组件参考
在我的RN组件类的Javascript 反应本机-子组件中的功能组件参考,javascript,react-native,react-native-component,Javascript,React Native,React Native Component,在我的RN组件类的render()中,我调用加载旋转木马的功能组件A。然后,A中的旋转木马在其renderItemprop中调用功能组件B。B包含定义为(this.list=ref)}/>的平面列表w ref 因此,A在A中定义的onTouch调用中成功访问了this.list.scrollToIndex()。我需要做的是在B中调用this.list.scrollToOffset(),其中定义了FlatList和ref,但当我这样做时,我得到一个错误TypeError:TypeError:nul
render()
中,我调用加载旋转木马的功能组件A。然后,A中的旋转木马在其renderItem
prop中调用功能组件B。B包含定义为(this.list=ref)}/>
的平面列表w ref
因此,A在A中定义的onTouch调用中成功访问了this.list.scrollToIndex()
。我需要做的是在B中调用this.list.scrollToOffset()
,其中定义了FlatList和ref,但当我这样做时,我得到一个错误TypeError:TypeError:null不是一个对象(计算'\u this.list.scrollToOffset'))
我尝试在类级别使用React.createRef(),但这也不起作用
代码如下:
//component B
renderList = () => {
if (scrollPosition>0) {
//this call to list fails
this.list.scrollToOffset({
offset: scrollPosition
})
}
return (
<FlatList
ref={ref => (this.list = ref)}
...
/>
)
}
//component A
renderCarousel = () => {
return (
<View style={{ flex: 1 }}>
<View>
<TouchableOpacity
onPress={() => {
this.list.scrollToIndex({ index: 0 }) //this call to list works
}}
>
</TouchableOpacity>
</View>
{
showList && (
<Carousel
renderItem={this.renderList}
/>
)
}
</View>
)
}
//B部分
renderList=()=>{
如果(滚动位置>0){
//此对列表的调用失败
this.list.scrollToOffset({
偏移量:滚动位置
})
}
返回(
(this.list=ref)}
...
/>
)
}
//A部分
renderCarousel=()=>{
返回(
{
this.list.scrollToIndex({index:0})//对list的调用有效
}}
>
{
展示列表&&(
)
}
)
}
我猜我正处在一个奇怪而可怕的js
区域。有什么想法吗??蒂亚 很难理解这段代码中的内容renderList
在我看来像是类中的一个方法,但您将它标记为“组件B”它是组件B中的一个方法吗?那么组件B的功能就不像你说的那样了。不管怎样,每次渲染都调用this.list.scrollToOffset
,在第一次渲染期间,显然还没有设置ref,因此出现了错误。您应该调用this.list.scrollToOffset
仅用于响应事件,而不是在每个事件上render@Max是的,错过了尚未渲染的事实-thx