में कस्टम इवेंट्स एंड्रॉइड पर मेरे रिएक्ट नेटिव ऐप में OpenStreetMap टाइल्स का उपयोग करना चाहते हैं, इसलिए मैं here. वर्णित ओएसएमड्रॉइड देशी यूआई घटक को लपेटने की कोशिश कर रहा हूं क्योंकि अधिकांश भाग यह ठीक काम कर रहा है , लेकिन मुझे यह पता लगाने में परेशानी हो रही है कि घटनाओं को सही तरीके से कैसे प्रबंधित किया जाए, विशेष रूप से onScroll
और onZoom
।रिएक्ट नेटिव एंड्रॉइड देशी यूआई घटक
ओएसएमड्रॉइड के साथ, आप ईवेंट को संभालने के लिए एक विलंबित मैपलिस्ट सेट करते हैं, जो कि बहुत सरल है। मैंने पुष्टि की है कि जेएस कोड ट्रिगर होने पर उस बिंदु तक जावा-साइड को ठीक से संभाल रहे हैं। हालांकि, वे मेरे जावास्क्रिप्ट कोड को ट्रिगर नहीं कर रहे हैं।
map.setMapListener(new DelayedMapListener(new MapListener() {
public boolean onScroll(ScrollEvent event) {
WritableMap eventData = Arguments.createMap();
// Fill in eventData; details not important
ReactContext reactContext = (ReactContext)map.getContext();
reactContext.getJSModule(RCTEventEmitter.class).receiveEvent(
map.getId(),
"topChange",
eventData);
return true;
}
public boolean onZoom(ZoomEvent event) {
// Basically the same as above
}
}, 100));
मेरी जे एस कोड के प्रासंगिक हिस्सा मूल रूप से दस्तावेज में कोड जुड़ा हुआ के समान है:
पर the documentation आधार पर, मैं मेरे विचार प्रबंधक की createViewInstance
विधि में जावा में ईवेंट हैंडलर्स को क्रियान्वित किया है उपरोक्त:
class OSMDroidMapView extends Component {
constructor(props) {
super(props);
this._onChange = this._onChange.bind(this);
}
_onChange(event: Event) {
console.log(event);
// Handle event data
}
render() {
return <OSMDroidMapView {...this.props} onChange={this._onChange}/>
}
}
कोई त्रुटि या कोई संकेत नहीं है कि कुछ भी गलत है। जावा इवेंट हैंडलर कोड सही ढंग से कहा जाता है। एक घटना होने पर जेएस कोड में कुछ भी होने का कोई संकेत नहीं है। क्या कोई जानता है कि यह सही तरीके से कैसे करें? मुझे लगता है कि मुझे यहां कुछ बुनियादी अवधारणा याद आनी चाहिए।
संभावित डुप्लिकेट [प्रतिक्रिया मूल पर एंड्रॉइड के लिए कस्टम यूआई घटक बनाना। जेएस को डेटा कैसे भेजें?] (Http://stackoverflow.com/questions/34739670/creating-custom-ui-component-for-android-on-react-native-how-to-send-data-to-js) –
मैंने एक साथ स्थापित करने की कोशिश की है [उस संबंधित पोस्ट पर एक व्यापक एंड्रॉइड -> आरएन इवेंट समाधान] (https://stackoverflow.com/a/44207488/383414)। –