Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在无状态React本机函数中引用组件_Javascript_React Native - Fatal编程技术网

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)