Xử lý đồng bộ trong code js, react native
500 anh em cho hỏi vấn đề react native và js
synchronously và async.
Mình code mấy ngày hôm nay rồi, nhưng vẫn chửa giải quyết đc
Bài toán: là mình fetch(api google map). Sau đó gán vào state. Rồi set region cho MapView để show ra. Chỉ có mỗi thế!!!
Vấn đề: Nhưng khổ nỗi là cái MapView của mình nó render ra trước cả cái hàm fetch(api). Đén lúc MapView render xong thì hàm fetch(api) mới xong. Vì thế MapView nó báo lỗi ko thể cập nhật dữ liệu
Giải quyết: Mình đã nhét hàm fetch() vào componentWilMount và test cả ở constructor nhưng vẫn ko dc.
Sử dụng luôn cả await nhưng cũng ko ăn thua.
Anh em nào đã từng giải quyết vấn đề đồng bộ và không đồng bộ thì giúp mình nhá:D.
đã fix đc lỗi :D. Ad close hộ em nhá .
Có nút tick chọn câu trã lời đúng dưới commnet, tick vào đó bài tự trôi.
Bạn cũng nên đưa giải pháp của bạn lên, cho những người đi sau nếu cũng gặp lỗi này thì đỡ khổ
thì bạn tạo một dữ liệu default cho MapView, hoặc không thì trong thời gian load cho hiện lên “loading…” . Chứ tốt nhất không nên bắt buộc phải get được dữ liệu từ google map mới show ra màn hình.
Lưu ý là bạn có nèm vào đâu (componentWillMount hay constructor) thì những xử lý liên quan đến IO sẽ luôn là bất đồng bộ. js (chứ không phải reactjs hay react native) sẽ không đợi đến lúc nhận kết quả rồi mới execute đoạn code tiếp theo.
Mình có tao default dữ liệu cho MapView đấy chứ. Nhưng trong quá trình setState, mình chỉ setState mỗi lat và lon trong object, cứ nghĩ là latDelta, lonDelta ko cập nhật thì ko phải ghi. Chỉ có đơn giản mỗi thế :D:D