Reactjs yönlendiricisinden Link bileşenini kullanıyorum ve onClickevent'in çalışmasını sağlayamıyorum. Kod bu:
<Link to={this.props.myroute} onClick='hello()'>Here</Link>
Bunu yapmanın yolu mu yoksa başka bir yol mu?
Yanıtlar:
Bunu kullanmalısın:
<Link to={this.props.myroute} onClick={hello}>Here</Link>
Veya (yöntem hello
bu sınıfta yer alıyorsa ):
<Link to={this.props.myroute} onClick={this.hello}>Here</Link>
Güncelleme: ES6 ve en son sürüm için, tıklama yöntemiyle bazı parametreleri bağlamak istiyorsanız, şunu kullanabilirsiniz:
const someValue = 'some';
....
<Link to={this.props.myroute} onClick={() => hello(someValue)}>Here</Link>
<Link to="" onClick={this.delete}>Delete</Link>
. Keşke burada "yapmak" isteğe bağlıdır.
Link
olmadan kullanasınız to
? İhtiyacınız yoksa, o zaman yöntemle <button>
birlikte a gibi başka bir bileşen onClick
ve gitmekte fayda var;).
Bunun genel olarak kullanmak için iyi bir model olduğuna inanmıyorum. Bağlantı, onClick olayınızı çalıştıracak ve ardından rotaya yönlendirecektir, böylece yeni rotaya navigasyonda hafif bir gecikme olacaktır. Daha iyi bir strateji, yaptığınız gibi 'to' prop ile yeni rotaya gitmektir ve yeni bileşenin componentDidMount () işlevinde merhaba işlevinizi veya başka herhangi bir işlevi çalıştırabilirsiniz. Size aynı sonucu verecektir, ancak rotalar arasında çok daha yumuşak bir geçişle.
Bağlam için, bunu, redux mağazamı burada olduğu gibi Link'te bir onClick olayıyla güncellerken fark ettim ve yeni rota bileşenini takmadan önce ~ .3 saniyelik boş beyaz ekran gecikmesine neden oldu. API araması yoktu, bu yüzden gecikmenin bu kadar büyük olmasına şaşırdım. Ancak, konsolda yalnızca 'merhaba' kaydı yapıyorsanız, gecikme fark edilmeyebilir.
onClick
, yeni rotaya geçmeden önce çereze kaydettiğim bir geri arama url'si var . Bu geri arama url'sini bir sonraki bileşende almayacağım, bu yüzden bunu kendisinin geçişinden önce yapmam gerekiyor. Buna alternatif var mı? Not: Geri arama url'si yenilendikten sonra bile erişilebilir olmalıdır, böylece onu mağazada kaydedebilir.
onPress={() => { this.props.navigation.navigate('NameOfNextScreen', { callbackUrl: 'http://.callbackUrl.com', });
-navigasyonu kullanmıyorsanız I sadece Link'in onClick'ini kullanır ve küçük performans sorunu için endişelenmeyin. Muhtemelen fark edilmeyecek.
this.hello.bind(this)