Używam komponentu Link z routera actjs i nie mogę uruchomić onClickevent. To jest kod:
<Link to={this.props.myroute} onClick='hello()'>Here</Link>
Czy to jest sposób, aby to zrobić, czy inny sposób?
reactjs
react-router
react-redux
bier hier
źródło
źródło
this.hello.bind(this)
<Link to="" onClick={this.delete}>Delete</Link>
. „Chcę” jest tutaj opcjonalne.Link
bezto
? Jeśli tego nie potrzebujesz, to po prostu jakiś inny komponent, taki jak a<button>
zonClick
metodą i jesteś gotowy;).Ogólnie nie uważam, że jest to dobry wzorzec. Link uruchomi Twoje zdarzenie onClick, a następnie przejdzie do trasy, więc nawigacja do nowej trasy będzie niewielka. Lepszą strategią jest nawigacja do nowej trasy za pomocą właściwości „to”, tak jak to zostało zrobione, a w funkcji componentDidMount () nowego komponentu można uruchomić funkcję hello lub dowolną inną funkcję. Zapewni to ten sam wynik, ale ze znacznie płynniejszym przejściem między trasami.
Dla kontekstu zauważyłem to podczas aktualizacji mojego sklepu redux zdarzeniem onClick na Link, tak jak tutaj, i spowodowało to ~ 0,3 sekundy opóźnienia pustego białego ekranu przed zamontowaniem komponentu nowej trasy. Nie było zaangażowanego wywołania API, więc byłem zaskoczony, że opóźnienie było tak duże. Jeśli jednak rejestrujesz tylko konsolę „cześć”, opóźnienie może nie być zauważalne.
źródło
onClick
przed przejściem na nową trasę. Nie otrzymam tego adresu URL wywołania zwrotnego w następnym komponencie, więc muszę to zrobić przed przejściem. Czy masz jakąś alternatywę? PS: URL wywołania zwrotnego powinien być dostępny nawet po odświeżeniu, aby można go było zapisać w sklepie.onPress={() => { this.props.navigation.navigate('NameOfNextScreen', { callbackUrl: 'http://.callbackUrl.com', });
Jeśli nie korzystasz z funkcji React-navigation I po prostu użyje onClick Link i nie martw się o drobny problem z wydajnością. Prawdopodobnie nie będzie to zauważalne.