Как я могу увидеть строку с math random?

#react-native

#react-native

Вопрос:

У меня есть массив строк. Например const strings['hello', 'hi', 'good day'] , и я пытаюсь выбрать одну строку случайным образом. Я вижу LOG 91 в журнале консоли, но как мне увидеть строку?

 function Generate() {
    const randomString = Math.floor(Math.random() * (scenario.length))
    return randomString
}

function MostLikely(this: any) {
  return (
    <ImageBackground
      source={require('../../../assets/banner.jpg')}
      style={styles.image}>
      
  <Text>{}</Text>
      <Button title='Generate' onPress={() => console.log(Generate())} />
    </ImageBackground>
  );
}
  

Ответ №1:

Предполагая, что вы используете функциональные компоненты, вы можете использовать useState и useCallback, чтобы получить то, что вы хотите:

 const scenarios = ['hello', 'hi', 'good day'];

function Generate() {
  const randomIndex = Math.floor(Math.random() * (scenarios.length));
  return scenarios[randomIndex];
}

function MostLikely() {
  const [randomString, setRandomString] = useState(Generate());

  const generateRandomString = useCallback(() => {
    setRandomString(Generate());
  }, []);


  return (
    <ImageBackground
      source={require('../../../assets/banner.jpg')}
      style={styles.image}
    >
      <Text>{randomString}</Text>
      <Button title="Generate" onPress={generateRandomString} />
    </ImageBackground>
  );
}
  

Комментарии:

1. Спасибо, это очень помогло понять, как это работает.

Ответ №2:

Generate() возвращает случайное число, которое вы должны использовать для индексации вашего массива:

 <Button title='Generate' onPress={() => console.log(scenario[Generate()])} />
  

Комментарии:

1. Спасибо, как мне добавить ее туда, хотя <Text>{}</Text> ?