Я пытаюсь получить доступ к своему "сообщению" от родителей. Я могу получить к нему доступ внутри 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}
)
}
Вы передаете опору id?
Я что-то упускаю? У вас нет реквизита с именем id. У вас есть реквизит с именем post. this.props.id или this.props.item.id - это undefined. У вас здесь this.props.post.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Как видите, вы передаете id как post своему дочернему компоненту:
<LoadComments post = {item.id}/>
поэтому вы должны использовать это:
this.props.post
если вы хотите использовать идентификатор, вы должны передать его как id следующим образом:
<LoadComments id = {item.id}/>
Чтобы использовать значение
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)
)
}
Вы должны сохранить реквизиты в статическом компоненте в методе рендеринга, а затем передать реквизиты функции, объявленной вне метода рендеринга.
Вы супер (инг) реквизит?