javascript - 有没有办法停止多次调用一个函数?

标签 javascript android function react-native

大家好,我是 React Native 的新手,一直在尝试使用 React Native 制作刽子手应用程序。 我想要做的是创建一个状态,在该状态下我保存随机单词并在下面有 textInput,以便该状态可以比较您在 textInput 中键入的内容并显示匹配的字母。否则它只会显示“_”。但问题是每次我在 textInput 中键入一个字母时,都会随机选择单词。我想保留一个单词,直到我完成单词的每个拼写。它看起来像一个函数每当我输入一个字母时,我都会调用 make,但我的编程技能还不够好,无法找出问题并解决问题。我尝试移动“selectedWord”和一些谷歌搜索,但没有成功。我正在附加我的代码如下。希望有人能给我一些建议!

const Words = () => { 
   const words = ['app', 'program', 'interface'];
   const [correctLetters, setCorrectLetters] = useState([]);
   let selectedWord = words[Math.floor(Math.random() * words.length)];
   function displayWord() {
      return (
        <Text>
         {selectedWord
           .split("")
           .map(letter => {
             if(letter === " ") {
               return letter;
             } else {
               return correctLetters.includes(letter) ? letter : " _ ";
             }
           })
           .join("")}
         </Text>
       );
     }
     return (
      <View>
        <Text>{displayWord()}</Text>
        <TextInput
          value={correctLetters}
          onChangeText={(e) => setCorrectLetters(e)}
        ></TextInput>
      </View>
     );
   };

最佳答案

你可以重构你的代码如下

const displayWord = ({ selectedWord, correctLetters }) => {
  return (
    <Text>
      {selectedWord
        .split("")
        .map((letter) => {
          if (letter === " ") {
            return letter;
          } else {
            console.log(correctLetters);
            return correctLetters.includes(letter) ? letter : " _ ";
          }
        })
        .join("")}
    </Text>
  );
};
const DisplayWord = React.memo(displayWord);

const words = ["app", "program", "interface"];

const Words = () => {
  const [correctLetters, setCorrectLetters] = useState([]);
  const [selectedWord, setSelectedWord] = useState("");
  useEffect(() => {
    setSelectedWord(words[Math.floor(Math.random() * words.length)]);
  }, []);
  return (
    <View>
      <DisplayWord
        selectedWord={selectedWord}
        correctLetters={correctLetters}
      />
      <TextInput
        value={correctLetters}
        onChangeText={(e) => setCorrectLetters(e)}
      />
    </View>
  );
};

关于javascript - 有没有办法停止多次调用一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63615293/

相关文章:

javascript - 带有数据切换的 AngularJS ng-click

android - 将用 Java 制作的简单安卓游戏转换为 Facebook

c# - 如何只允许数字、点和信号?

c - 如何在 C 语言中对字符串数组进行排序?

c - 尝试创建一个对数组中所有值进行平方的函数。最后一个值出现奇怪的数字

javascript - 在 jquery 函数中添加延迟

Javascript 和 JSP 未重新加载

javascript - Chrome Dev Tools - 按函数名开始调试

javascript - 使用 Laravel 和 AJAX 进行分块文件上传

android - 何时使用 JobIntentService 与 WorkManager?