Tôi đang sử dụng thành phần Liên kết từ bộ định tuyến reactjs và tôi không thể làm cho onClickevent hoạt động. Đây là mã:
<Link to={this.props.myroute} onClick='hello()'>Here</Link>
Đây là cách để làm điều đó hay cách khác?
Câu trả lời:
Bạn nên sử dụng cái này:
<Link to={this.props.myroute} onClick={hello}>Here</Link>
Hoặc (nếu phương thức hello
nằm ở lớp này):
<Link to={this.props.myroute} onClick={this.hello}>Here</Link>
Cập nhật: Đối với ES6 và phiên bản mới nhất nếu bạn muốn liên kết một số thông số với phương thức nhấp chuột, bạn có thể sử dụng điều này:
const someValue = 'some';
....
<Link to={this.props.myroute} onClick={() => hello(someValue)}>Here</Link>
<Link to="" onClick={this.delete}>Delete</Link>
. Tôi muốn "to" là tùy chọn ở đây.
Link
mà không có to
? Nếu bạn không cần nó, thì chỉ cần một số thành phần khác như a <button>
với onClick
phương thức và bạn đã sẵn sàng;).
Tôi không tin rằng đây là một mô hình tốt để sử dụng nói chung. Liên kết sẽ chạy sự kiện onClick của bạn và sau đó điều hướng đến tuyến đường, vì vậy sẽ có một chút chậm trễ khi điều hướng đến tuyến đường mới. Một chiến lược tốt hơn là điều hướng đến tuyến đường mới với 'to' prop như bạn đã làm và trong hàm componentDidMount () của thành phần mới, bạn có thể kích hoạt hàm hello hoặc bất kỳ hàm nào khác. Nó sẽ cung cấp cho bạn kết quả tương tự, nhưng với sự chuyển đổi giữa các tuyến đường mượt mà hơn nhiều.
Đối với ngữ cảnh, tôi nhận thấy điều này khi cập nhật cửa hàng redux của mình với sự kiện onClick trên Liên kết như bạn có ở đây và nó gây ra độ trễ màn hình trắng-trắng ~ 0,3 giây trước khi gắn thành phần của tuyến đường mới. Không có cuộc gọi api nào liên quan, vì vậy tôi ngạc nhiên vì sự chậm trễ lớn đến vậy. Tuy nhiên, nếu bạn chỉ ghi nhật ký bảng điều khiển 'xin chào', sự chậm trễ có thể không đáng chú ý.
onClick
trước khi chuyển sang tuyến mới. Tôi sẽ không nhận được url gọi lại đó trong thành phần tiếp theo vì vậy tôi cần làm điều đó trước khi chuyển đổi chính nó. Bạn có bất kỳ thay thế cho điều đó? Tái bút: Url gọi lại phải có thể truy cập được ngay cả sau khi làm mới để có thể lưu nó trong cửa hàng.
onPress={() => { this.props.navigation.navigate('NameOfNextScreen', { callbackUrl: 'http://.callbackUrl.com', });
Nếu bạn không sử dụng điều hướng phản ứng. sẽ chỉ sử dụng onClick của Liên kết và không lo lắng về vấn đề hiệu suất nhỏ. Nó có lẽ sẽ không được chú ý.
this.hello.bind(this)