#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> ?