Bird
Raised Fist0
React Nativemobile~10 mins

TouchableOpacity and TouchableHighlight in React Native - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to make the button respond to touches using TouchableOpacity.

React Native
import React from 'react';
import { Text, View, [1] } from 'react-native';

export default function App() {
  return (
    <View>
      <[1] onPress={() => alert('Pressed!')}>
        <Text>Press Me</Text>
      </[1]>
    </View>
  );
}
Drag options to blanks, or click blank then click option'
APressable
BTouchableHighlight
CButton
DTouchableOpacity
Attempts:
3 left
💡 Hint
Common Mistakes
Using Button instead of TouchableOpacity for custom touch effects.
Forgetting to import TouchableOpacity.
2fill in blank
medium

Complete the code to use TouchableHighlight with a custom underlay color.

React Native
import React from 'react';
import { Text, View, TouchableHighlight } from 'react-native';

export default function App() {
  return (
    <View>
      <TouchableHighlight underlayColor=[1] onPress={() => alert('Pressed!')}>
        <Text>Press Here</Text>
      </TouchableHighlight>
    </View>
  );
}
Drag options to blanks, or click blank then click option'
A'blue'
B'transparent'
C'#DDDDDD'
D'red'
Attempts:
3 left
💡 Hint
Common Mistakes
Using transparent as underlayColor which shows no effect.
Using color names that are too dark or not visible.
3fill in blank
hard

Fix the error in the code by choosing the correct prop to handle press events on TouchableOpacity.

React Native
import React from 'react';
import { Text, View, TouchableOpacity } from 'react-native';

export default function App() {
  return (
    <View>
      <TouchableOpacity [1]={() => alert('Clicked!')}>
        <Text>Click Me</Text>
      </TouchableOpacity>
    </View>
  );
}
Drag options to blanks, or click blank then click option'
AonClick
BonPress
ConTap
DonTouch
Attempts:
3 left
💡 Hint
Common Mistakes
Using onClick instead of onPress causes no response.
Using onTouch which is not a valid prop here.
4fill in blank
hard

Fill both blanks to create a TouchableHighlight that changes underlay color and shows a message on press.

React Native
import React from 'react';
import { Text, View, [1] } from 'react-native';

export default function App() {
  return (
    <View>
      <[1] underlayColor=[2] onPress={() => alert('Hello!')}>
        <Text>Tap Me</Text>
      </[1]>
    </View>
  );
}
Drag options to blanks, or click blank then click option'
ATouchableHighlight
BTouchableOpacity
C'#AAAAAA'
D'#FF0000'
Attempts:
3 left
💡 Hint
Common Mistakes
Using TouchableOpacity with underlayColor which it does not support.
Choosing a color that is too bright or invisible.
5fill in blank
hard

Fill all three blanks to create a TouchableOpacity with an active opacity and a press handler.

React Native
import React from 'react';
import { Text, View, TouchableOpacity } from 'react-native';

export default function App() {
  return (
    <View>
      <TouchableOpacity activeOpacity=[1] onPress=[2]>
        <Text>[3]</Text>
      </TouchableOpacity>
    </View>
  );
}
Drag options to blanks, or click blank then click option'
A0.5
B() => alert('Pressed!')
CPress Me
D1
Attempts:
3 left
💡 Hint
Common Mistakes
Setting activeOpacity to 1 means no opacity change on press.
Passing a string instead of a function to onPress.

Practice

(1/5)
1. What is the main visual difference between TouchableOpacity and TouchableHighlight in React Native?
easy
A. Both components fade the button but with different speeds.
B. TouchableOpacity shows a colored highlight, TouchableHighlight fades the button.
C. TouchableOpacity fades the button, TouchableHighlight shows a colored highlight.
D. Both components show a colored highlight but with different colors.

Solution

  1. Step 1: Understand TouchableOpacity behavior

    TouchableOpacity reduces the opacity of the button to create a fading effect on tap.
  2. Step 2: Understand TouchableHighlight behavior

    TouchableHighlight adds a colored overlay highlight on tap instead of fading.
  3. Final Answer:

    TouchableOpacity fades the button, TouchableHighlight shows a colored highlight. -> Option C
  4. Quick Check:

    Opacity fade = TouchableOpacity, Highlight color = TouchableHighlight [OK]
Hint: Opacity fade means TouchableOpacity, colored highlight means TouchableHighlight [OK]
Common Mistakes:
  • Confusing which component fades vs highlights
  • Thinking both behave the same visually
  • Assuming TouchableHighlight fades opacity
2. Which of the following is the correct way to import TouchableOpacity in a React Native component?
easy
A. import { TouchableOpacity } from 'react-native';
B. import TouchableOpacity from 'react-native';
C. import TouchableOpacity from 'react-native-touchable';
D. import { TouchableOpacity } from 'react-native-touchable';

Solution

  1. Step 1: Check React Native import syntax

    React Native exports TouchableOpacity as a named export, so it must be imported with curly braces.
  2. Step 2: Verify package source

    TouchableOpacity is part of the core react-native package, not a separate package.
  3. Final Answer:

    import { TouchableOpacity } from 'react-native'; -> Option A
  4. Quick Check:

    Named import from 'react-native' = import { TouchableOpacity } from 'react-native'; [OK]
Hint: Use curly braces for named imports from 'react-native' [OK]
Common Mistakes:
  • Using default import without braces
  • Importing from wrong package name
  • Missing curly braces around TouchableOpacity
3. What will happen when the user taps the button in this code snippet?
import React from 'react';
import { TouchableHighlight, Text } from 'react-native';

export default function App() {
  return (
     alert('Pressed!')}>
      Tap me
    
  );
}
medium
A. The button fades out on tap and shows an alert.
B. The button shows a red highlight on tap and shows an alert.
C. Nothing happens on tap because underlayColor is invalid.
D. The button shows a yellow highlight on tap and shows an alert.

Solution

  1. Step 1: Identify component behavior

    TouchableHighlight uses the underlayColor prop to show a colored highlight when pressed.
  2. Step 2: Check the underlayColor value and onPress

    The underlayColor is set to 'yellow', so the highlight will be yellow. The onPress triggers an alert with 'Pressed!'.
  3. Final Answer:

    The button shows a yellow highlight on tap and shows an alert. -> Option D
  4. Quick Check:

    TouchableHighlight + underlayColor yellow + alert onPress = The button shows a yellow highlight on tap and shows an alert. [OK]
Hint: TouchableHighlight uses underlayColor for highlight color [OK]
Common Mistakes:
  • Confusing fade effect with TouchableOpacity
  • Assuming underlayColor changes text color
  • Ignoring the alert onPress effect
4. Identify the error in this React Native code using TouchableOpacity:
import React from 'react';
import { TouchableOpacity, Text } from 'react-native';

export default function App() {
  return (
     console.log('Pressed')}
      Click me
    
  );
}
medium
A. Missing closing bracket ">" on TouchableOpacity opening tag.
B. Incorrect import statement for TouchableOpacity.
C. The onPress function should return a value.
D. Text component cannot be a child of TouchableOpacity.

Solution

  1. Step 1: Check JSX syntax for TouchableOpacity

    The opening tag for TouchableOpacity is missing the closing ">" before the child Text component.
  2. Step 2: Verify other parts

    Imports are correct, onPress does not need to return a value, and Text can be a child of TouchableOpacity.
  3. Final Answer:

    Missing closing bracket ">" on TouchableOpacity opening tag. -> Option A
  4. Quick Check:

    JSX tags must close properly = Missing closing bracket ">" on TouchableOpacity opening tag. [OK]
Hint: Check JSX tags for missing > or /> [OK]
Common Mistakes:
  • Ignoring missing closing bracket errors
  • Thinking onPress must return a value
  • Believing Text cannot be child of TouchableOpacity
5. You want a button that shows a blue highlight when pressed and also reduces opacity slightly. Which approach correctly combines TouchableHighlight and TouchableOpacity to achieve this effect?
hard
A. Wrap TouchableHighlight inside TouchableOpacity with underlayColor='blue'.
B. Wrap TouchableOpacity inside TouchableHighlight with underlayColor='blue'.
C. Use only TouchableOpacity with underlayColor='blue' prop.
D. Use only TouchableHighlight with activeOpacity={0.5} prop.

Solution

  1. Step 1: Understand each component's effect

    TouchableHighlight provides the colored highlight via underlayColor. TouchableOpacity controls opacity fade via activeOpacity.
  2. Step 2: Combine effects by nesting

    Wrapping TouchableOpacity inside TouchableHighlight applies the highlight outside and opacity fade inside, combining both effects.
  3. Step 3: Check other options

    Wrap TouchableHighlight inside TouchableOpacity with underlayColor='blue'. reverses nesting, which breaks highlight effect. Options C and D misuse props not supported by those components.
  4. Final Answer:

    Wrap TouchableOpacity inside TouchableHighlight with underlayColor='blue'. -> Option B
  5. Quick Check:

    Nesting TouchableOpacity inside TouchableHighlight = Wrap TouchableOpacity inside TouchableHighlight with underlayColor='blue'. [OK]
Hint: Wrap opacity inside highlight to combine effects [OK]
Common Mistakes:
  • Reversing component nesting order
  • Using unsupported props on components
  • Expecting one component to do both effects alone
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard