Javascript 在无状态React本机函数中引用组件
我正在使用一个组件,它接受一个函数来呈现内容。在内容中,我使用了一个。我正在尝试向滑块添加一个功能,以便您也可以通过点击栏中的一个点来选择一个值。但是,我无法从外部引用滑块视图,因为您不能在无状态组件中使用参照。以下是我想做的:Javascript 在无状态React本机函数中引用组件,javascript,react-native,Javascript,React Native,我正在使用一个组件,它接受一个函数来呈现内容。在内容中,我使用了一个。我正在尝试向滑块添加一个功能,以便您也可以通过点击栏中的一个点来选择一个值。但是,我无法从外部引用滑块视图,因为您不能在无状态组件中使用参照。以下是我想做的: render() { Return ( <Accordion sections={SECTIONS} renderHeader={this.renderHeader} renderContent={this.ren
render() {
Return (
<Accordion
sections={SECTIONS}
renderHeader={this.renderHeader}
renderContent={this.renderContent}
/>
)
}
tapSliderHandler = (evt) => {
this.refs.slider.measure((fx, fy, width, height, px, py) => {
this.setState({value: (evt.nativeEvent.locationX - px) / width});
})
}
renderContent = (section, i, isActive) => {
return (
<View ref="slider" style={styles.container}>
<TouchableWithoutFeedback onPressIn={this.tapSliderHandler}>
<Slider
value={this.props.appState[section.id]}
onValueChange={value => this.props.appState[section.id] = value}
/>
</TouchableWithoutFeedback>
</View>
);
}
render(){
返回(
.假设您的问题是,“如何调用renderContent
函数并传递参数(section,I,isActive)”,那么您可以这样做
<Accordion
sections={SECTIONS}
renderHeader={this.renderHeader}
renderContent={this.renderContent.bind(null, section, i, isActive)}
/>
但我不能肯定这是您正在寻找的解决方案。如果不是,请查看我的评论,并帮助我了解您的代码在哪里出了问题。假设您的问题是,“如何调用renderContent
函数并传递参数(部分,I,isActive)?”那么您可以这样做
<Accordion
sections={SECTIONS}
renderHeader={this.renderHeader}
renderContent={this.renderContent.bind(null, section, i, isActive)}
/>
但我不能肯定这是您正在寻找的解决方案。如果不是,请查看我的评论,并帮助我了解您的代码在哪里出现故障。我了解您的目的,但我不了解问题所在。您能更清楚地说明上述代码在哪里出现故障吗?您说“但当手风琴需要一个功能来呈现内容时,我不知道该怎么做。“看起来您正在将一个函数传递给renderContent
prop。我觉得它应该可以工作,那么我缺少了什么?很抱歉,我不清楚。由于renderContent是一个无状态函数,定义'ref'没有用。问题是如何引用视图(ref=“slider”)从tapSliderHandler函数中,因为不能使用ref。我将尝试更好地回答这个问题。明白了,在这种情况下,我认为您应该能够通过扩展我以前的答案来解决这个问题,将ref传递给元素,如下所示…renderContent={this.renderContent.bind(null,section,I,isActive,elem)
我明白你的意图,但我不明白问题所在。你能更清楚地说明上面的代码在哪里出现故障吗?你说“但我不知道当手风琴需要一个呈现内容的功能时该怎么做。”看起来您正在将函数传递给renderContent
prop。似乎它应该对我有用,那么我缺少了什么?很抱歉,我不清楚。由于renderContent是一个无状态函数,因此定义“ref”没有用。问题是如何引用视图(ref=“slider”)从tapSliderHandler函数中,因为不能使用ref。我将尝试更好地回答这个问题。明白了,在这种情况下,我认为您应该能够通过扩展我以前的答案来解决这个问题,将ref传递给元素,如下所示…renderContent={this.renderContent.bind(null,section,I,isActive,elem)