Как получить ссылку из пользовательского компонента в реагирующем хуке? - PullRequest
0 голосов
/ 09 октября 2019

У меня есть этот код, использующий React.useRef (), но не работающий: Main.js:

import * as React from "react"
export const Main: React.FunctionComponent<Props> = observer((props) => {
  const ref = React.useRef()

  React.useEffect(() => {
    ///Can not get ref from message
    ref.gotoPosition(5)
  }, [])
  return (
    <View style={styles.container}>
      <Message
        ref={ref}
        getGotoIndex={getFunction}
        onEndList={isShowQuickMove}
        isSpeaker={state.isSpeaker}
        questionsList={state.questionsList}
        clickQuestion={clickQuestion}
        isTyping={chatStore.loading}
        data={state.data}/>
    </View>
  )
}

Message.js:

import * as React from "react"
// eslint-disable-next-line react/display-name
export const Message = React.forwardRef((props, ref) => ({
  const { ... } = props

  const gotoPosition = (index) => {
    console.log('in here')
  }
  return (
    <View>
....
</View>
  )
}
)

Я не могу получить ссылку изСообщение, даже я использовал React.forwardRef. Как получить доступ к функции gotoPosition в сообщении с помощью ref, как ref.gotoPosition (5). Спасибо

1 Ответ

0 голосов
/ 09 октября 2019

Вы не передаете ссылку, которую получаете на Flatlist, все, что вам нужно сделать, это передать ее так:

    <FlatList
      ref={ref} // create a referenece like so
      extraData={[data, isSpeaker]}
      onEndReached={handleEnd}
      onEndReachedThreshold={0.4}
      data={data}
      keyExtractor={(item, index) => index.toString()}
      renderItem={renderItems}
    />
...