নেটিভ প্রতিক্রিয়া: দেখুন অনপ্রেস কাজ করে না


115

আমি একটি অদ্ভুত সমস্যার মুখোমুখি হয়েছি। আমার প্রতিক্রিয়াশীল নেটিভ অ্যাপ্লিকেশনটিতে, আমি যদি onPressইভেন্টটি সেট করি Viewতা ট্রিগার হয় না তবে যদি আমি এটির Textভিতরে সেট করি তবে Viewএটি আগুন ধরিয়ে দেয়। আমি এখানে কি মিস করছি?

<View style={{backgroundColor: "red", padding: 20}}>
  <Text onPress={()=> {
    console.log('works');
    }
  }>X</Text>
</View>


<View style={{backgroundColor: "red", padding: 20}} onPress={()=> {
    console.log('does not work');
    }
  }>
  <Text>X</Text>
</View>

কেন এমন হয়? এই প্রতিক্রিয়া নেটিভ সঙ্গে একটি সমস্যা? আমি 0.43 সংস্করণ ব্যবহার করছি

উত্তর:


188

আপনি ইভেন্টের TouchableOpacityজন্য ব্যবহার করতে পারেন onPress। প্রোপ সরবরাহ Viewকরে নাonPress

<TouchableOpacity style={{backgroundColor: "red", padding: 20}} onPress={()=> {
    console.log('does not work');
    }
  }>
  <Text>X</Text>
</TouchableOpacity>

4
সম্পূর্ণ রেফারেন্স ডকুমেন্টেশন এখানে: facebook.github.io/react-native/docs/touchableopacity.html
মুহাম্মদ হান্নান

অনপ্রেস কি তার কলব্যাক হিসাবে অ্যাসিঙ্ক ফাংশন নিয়ে কাজ করতে পারে? সরকারী নথিপত্রে আমি এর উল্লেখ দেখতে পাচ্ছি না।
ryanwebjackson

27

আপনি এ এর ​​সাথে একটি দৃশ্যটি আবদ্ধ করতে পারেন TouchableWithoutFeedbackএবং তারপরে onPressযথারীতি ব্যবহার এবং বন্ধুদের ব্যবহার করতে পারেন। এছাড়াও আপনি pointerEventsচাইল্ড ভিউতে অ্যাট্রিবিউট সেট করেও অবরুদ্ধ করতে পারেন , এমনকি এটি পিতামাতার উপরের পয়েন্টার ইভেন্টগুলিকে ব্লক করে দেয় TouchableWithoutFeedback, এটি আকর্ষণীয়, অ্যান্ড্রয়েডে এটি আমার প্রয়োজন ছিল, আমি আইওএসে পরীক্ষা করিনি:

https://facebook.github.io/react-native/docs/touchablewithoutfeedback.html

<TouchableWithoutFeedback onPressIn={this.closeDrawer}>
    <Animated.View style={[styles.drawerBackground, styleBackground]} pointerEvents={isOpen ? undefined : 'none'} />
</TouchableWithoutFeedback>

4
আইওএসের উপর পরীক্ষিত এবং এটি ঠিক কাজ করে। উভয়ই প্রতিক্রিয়ার ছাড়াই স্পর্শযোগ্য এবং স্পর্শযোগ্য হাইলাইট
হ্যাড করেছেন

ভাগ করে নেওয়ার জন্য ধন্যবাদ! কি pointerEventsNoneমোড়ানো পিতা বা মাতা সন্তানের ব্লক দ্বারা টিপে?
নোটিডার্ট

6

এটি অর্জনের জন্য আপনি TouchableOpacity, TouchableHightlight, TouchableNativeFeedback ব্যবহার করতে পারেন। সামগ্রীটি প্রপস হিসাবে অনপ্রেস সরবরাহ করে না। সুতরাং আপনি এটি পরিবর্তে এগুলি ব্যবহার করুন।

<TouchableNativeFeedback
        onPress={this._onPressButton}
</TouchableNativeFeedback>

OR

<TouchableHighlight onPress={this._onPressButton}>
</TouchableHighlight>

OR

<TouchableOpacity onPress={this._onPressButton}>
</TouchableOpacity>


4

বিকল্পভাবে আপনি নিজের মতামতটিতে স্টার্টশোল্ডসেটরপেন্ডার সরবরাহ করতে পারেন, যেমন:

<View onStartShouldSetResponder={() => console.log("View click")}>
  // some code here
</View>

0

ভিউ অনপ্রেস প্রোপ সরবরাহ করে না। Ptionচ্ছিক আপনি ব্যবহার করতে পারেন

<View onStartShouldSetResponder={() => console.log("View click")}>
  <Text>X</Text>
</View>

অন্যথায় আপনি স্পর্শযোগ্যতা ব্যবহার করতে পারেন

<TouchableOpacity onPress={this._onPress}>
<Text>X</Text>
</TouchableOpacity>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.