Я пытаюсь получить доступ к своему "сообщению" от родителей. Я могу получить к нему доступ внутри render (), но не выше, где у меня есть getCom (). Как сделать опору доступной в функциях, а не только в рендере? Я пытался использовать this.item.id.bind(this), но это не сработало.

Родитель :

<LoadComments post={item.id}/>

Ребенок

class LoadComments extends Component {
  getCom = async () => {

    // Thid does not work

    this.unsubscribe = await firestore.collection("comments").where("post", "==", this.props.post).onSnapshot((querySnapshot) => {
     // Rest of code

  }
  render() {
    return (

      // This works:

      {this.props.post}

    )
  }
4
vemund 15 Сен 2018 в 19:13

2 ответа

Лучший ответ

Как видите, вы передаете id как post своему дочернему компоненту:

<LoadComments post={item.id}/>

Поэтому вы должны использовать это:

this.props.post

Если вы хотите использовать, если вы должны передать его как id следующим образом:

<LoadComments id={item.id}/>
3
MBehtemam 15 Сен 2018 в 16:21

Чтобы использовать значение

 item.id

В вашем дочернем компоненте вам следует сделать следующее:

В родительском:

<LoadComments post={item.id}>

В дочернем компоненте:

class LoadComments extends Component {

   async getCom(props) => {

   // This would work now

  this.unsubscribe = await firestore.collection("comments").where("post", "==", 
  props.post).onSnapshot((querySnapshot) => {
   // Rest of code

   }
  render() {
    const props = this.props;
      return (

        {this.props.post}

        getCom(props)

 )
}

Вы должны сохранить реквизиты в статическом компоненте в методе рендеринга, а затем передать реквизиты функции, объявленной вне метода рендеринга.

2
Payel Dutta 21 Ноя 2018 в 10:33