Rumah > Soal Jawab > teks badan
Saya meminta nasihat anda semua.
Saya mencipta Komponen komponen dan menulis fungsi lompat yang serupa dengan this.context.router.push("/user/list") di dalam panggilan balik kejayaan ajax. Pada masa yang sama, Component.contextTypes={ router: React.PropTypes.object.isRequired } ditulis di luar komponen. Permintaan ajax juga berjaya, tetapi halaman itu tidak melompat, yang agak meragukan. . .
Struktur kod adalah serupa:
class Component extends React.Component{
...
success: function(data) {
alert(data);
this.context.router.push(...)
}
}
Component.contextTypes={
router: React.PropTypes.object.isRequired
}
阿神2017-07-05 11:06:52
Di sini saya akan menulis tentang perangkap yang saya temui semasa mencari jawapan di Internet Ia juga untuk memaklumkan kepada pemula yang menghadapi masalah yang sama atau serupa kemudian. , saya dapati Seseorang menulisnya di dalam komponen dengan cara ini:
class Component extends React.Component{
[有些人写static有些人又不写static] contentTypes: {
router: React.PropTypes.object.isRequired
}
...
this.context.router.push(...)
}
Namun, apabila saya melakukan ini, saya selalu mendapat masalah di sini, iaitu, ralat "Tidak boleh membaca sifat 'push' tidak ditakrifkan" dilaporkan. Tidak jelas mengapa, mari kita tulis dahulu曾经蜡笔没有小新2017-07-05 11:06:52
"Tidak dapat membaca sifat 'tolak' tidak ditakrifkan"
Ralat ini memastikan bahawa ContextTypes ditulis
dan pembina tidak kehilangan konteks apabila memanggil super
class Component {
constructor(props, context) {
super(...arguments) // 这样才行,如果只写props, 会把context 弄丢,所以super时始终建议这么写
}
}