Rumah  >  Soal Jawab  >  teks badan

javascript - Masalah Reactjs tentang melompat this.context.router.push(path) dalam fungsi

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
}
PHP中文网PHP中文网2663 hari yang lalu1057

membalas semua(3)saya akan balas

  • 仅有的幸福

    仅有的幸福2017-07-05 11:06:52

    Tidak dapat ini? Cuba gunakan success()->()

    balas
    0
  • 阿神

    阿神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

    balas
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新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时始终建议这么写
      }
    }

    balas
    0
  • Batalbalas