【问题标题】:Trouble getting states to work in react native无法让状态在本机反应中工作
【发布时间】:2020-10-13 18:27:11
【问题描述】:

我对 React Native 中的状态概念非常陌生,并且无法使用它们来更改组件的状态。我有三个文本组件,一个是问题,另外两个是答案(是和否),另一个文本组件检查我对问题的回答是否是写,所以检查文本组件。当我为某个问题单击“是”时,如果答案为“是”,则最后一个检查组件的状态应更改为“正确”,如果答案为“否”,则应更改为“错误”。所以基本上,这就是我想做的:

这是我目前所拥有的:

这是我得到的错误:

这是我目前的代码:

import React, { useState, useEffect } from 'react';
import { StyleSheet, Text, View, TouchableOpacity, Alert, ScrollView, Image } from 'react-native';
// import TextComp from './components/Home2'
export default function App() {

  const [answer, setAnswer] = useState('answer');
  const [correctAns, setCorrectAns] = useState('');

  const useEffect = () => {
    if (answer == 'answer') {
      setCorrectAns('please answer!');
    } else if (answer == 'Yes') {
      setCorrectAns('Right');
    } else if (answer == 'No') {
      setCorrectAns('Wrong');
    };
  };
  const corAns = () => { Alert('Your answer was ', correctAns) }

  return (
    <ScrollView style={styles.container}>

      <View style={{ alignItems: 'center' }}>

        <Image source={require('./images/pic.jpeg')} style={styles.uriImg} />

        <Text style={styles.title}>Is this Mt. Fuji?</Text>
        <TouchableOpacity
          onPress={() => setAnswer('Yes')}>
          <Text style={styles.text}>Yes</Text>
        </TouchableOpacity>
        <TouchableOpacity
          onPress={() => setAnswer('No')}>
          <Text style={styles.text}>No</Text>
        </TouchableOpacity>
        <TouchableOpacity
          onPress={corAns}>
          <Text style={styles.text2}>Check</Text>
        </TouchableOpacity>

        <Image source={require('./images/yellow.png')} style={styles.uriImg} />

        <Text style={styles.title}>Is this red color?</Text>
        <TouchableOpacity
          onPress={() => setAnswer('Yes')}>
          <Text style={styles.text}>Yes</Text>
        </TouchableOpacity>
        <TouchableOpacity
          onPress={() => setAnswer('No')}>
          <Text style={styles.text}>No</Text>
        </TouchableOpacity>
        <TouchableOpacity
          onPress={corAns}>
          <Text style={styles.text2}>Check</Text>
        </TouchableOpacity>
      </View>
    </ScrollView>);
}

谁能告诉我怎么做?谢谢!

【问题讨论】:

    标签: javascript reactjs react-native state react-state


    【解决方案1】:

    像这样使用 useEffect

    useEffect(() => {
     if (answer === 'Yes') {
      Alert.alert('Right')
     }
     if (answer === 'No') {
     Alert.alert('Wrong')
     }
    }, [ answer ])

    或按检查按钮

       const checkAnswer = () => {
         if (answer === 'Yes') {
          Alert.alert('Right')
         }
         if (answer === 'No') {
         Alert.alert('Wrong')
         }
         if (answer === 'answer') {
              Alert.alert('please answer')
         }
        }
        
        

    设置检查按钮 onPress={checkAnswer}

    【讨论】:

    • 您好,谢谢您的回答,它似乎可以工作,但是否可以让它与“检查”文本组件一起工作?就像不是单击答案,而是存储它,然后单击检查时显示正确答案?谢谢!
    • 在这种情况下你不需要 useEffect,我更新了我的答案
    猜你喜欢
    • 1970-01-01
    • 2019-08-11
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多