Been using React for a bit and wanted to try out native using expo, when I click on a button to increment a counter, I get a ReferenceError on my phone saying “Can’t find variable: counter”, I don’t get any error on the expo gui or in VSCode, very confused.
import React from "react"; import { StyleSheet, Text, View } from "react-native"; import { Button } from "react-native-elements"; export default class App extends React.Component { constructor(props) { super(props); this.state = { counter: 0 }; } increment() { this.setState({ counter: (counter += 1) }); } render() { return ( <View style={styles.container}> <Text>Open up App.js to start working on your app!</Text> <Text>{this.state.counter}</Text> <Button title="Press Me" onPress={this.increment}></Button> </View> ); } } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: "#fff", alignItems: "center", justifyContent: "center" } });
Advertisement
Answer
Change your increment
function to
increment = () => { this.setState({ counter: this.state.counter + 1 }); }
Make sure to define your increment
function as an arrow function otherwise you can’t access it from Button
.
<Button title="Press Me" onPress={this.increment}></Button>
Feel free for doubts.