'Не могу найти переменную: клики' в реагирующем - PullRequest
0 голосов
/ 16 июня 2019

Следующий код показывает ошибку при нажатии на «Click Me!» Кнопка говорит, что переменная 'щелчков' не может быть найдена, тогда как она правильно упоминается в состоянии

import { StyleSheet, Alert, Text, View, TouchableOpacity} from 'react-native';
import { Button } from 'native-base';
export default class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      clicks: 0
    };
  }
buttonPressed = () => {
 if(this.state.clicks > 5)
 {
    Alert.alert('Caution!','You have clicked 5 times already!');
    this.setState({clicks: 0});
    this.forceUpdate();
 }
 this.setState({clicks: clicks+1});
}
render() {
    return (
      <View>
        <TouchableOpacity onPress={()=>{this.buttonPressed()}}>
           <Text>Click Me!</Text>
        </TouchableOpacity>
      </View>
)};

Ответы [ 3 ]

1 голос
/ 16 июня 2019

clicks не является переменной - это свойство this.state.

this.setState({ clicks: this.state.clicks + 1 });
1 голос
/ 16 июня 2019

У вас нет имени переменной clicks, вы должны определить его или использовать this.state.clicks

изменить это

this.setState({ clicks: clicks + 1 });

на это

this.setState({ clicks: this.state.clicks + 1 });

Или к этому

buttonPressed = () => {
 let {clicks} = this.state   // define `clicks` here
 if(clicks > 5)
 {
    Alert.alert('Caution!','You have clicked 5 times already!');
    this.setState({clicks: 0});
    this.forceUpdate();
 }
 this.setState({clicks: clicks+1});
 //                     ^^^^^^^
}
0 голосов
/ 16 июня 2019

Проблема с этой строкой: this.setState({clicks: clicks+1}); clicks в правой части двоеточия не определено.

Что вы можете сделать, это использовать prevState из setStateфункция:

this.setState(prevState => ({clicks: prevState.clicks + 1}));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...