Inilah versi sederhana dari komponen yang menunjukkan masalah yang saya alami. Saya ingin mengakses this.props di componentDidMount(), tetapi propertinya tidak ditentukan. Namun, itu didefinisikan ketika melihatnya sebagai log ketika diteruskan hanya sebagai this.

Dalam metode render(), this.props tersedia.

import React, { Component } from 'react';
import * as ReadableAPI from '../utils/api'

class ListComments extends Component {
  componentDidMount() {
    console.log("mounted")
    console.log(this.props)
    console.log(this)
  }
  render() {
    console.log("rendered")
    return (
      <div>
        <h1>{this.props.postId}</h1>
      </div>
    )
  }
}

export default ListComments

Inilah output konsol yang sesuai:

console demonstrating issue

Edit: perbarui judul; this.props tidak terdefinisi, tetapi properti di this.props adalah.

-1
Zef D. 26 November 2017, 21:12

1 menjawab

Jawaban Terbaik

Inilah masalahnya:

Saya menetapkan properti ke komponen ListComments melalui komponen induk, Post. Kemudian, di Post, saya salah menetapkan id yang sama ke komponen anak dari status komponen.:

<Route path="/:category/:id" component={Post}/>

<ListComments postId={this.state.post.id}/>

Saya seharusnya menetapkan melalui parameter router asli:

<ListComments postId={this.props.match.params.id}/>

1
Zef D. 26 November 2017, 18:28