#javascript #reactjs #react-native
#javascript #reactjs #react-native
Вопрос:
Здесь всякий раз, когда я нажимаю на значок, он ничего не показывает. Предполагается, что он показывает некоторый текст, и при повторном нажатии он должен скрывать текст. Я использую react native.
import React, { useState } from 'react';
import { View, Text, StyleSheet, Button, Image, TouchableOpacity} from 'react-native';
import FontAwesome from 'react-native-vector-icons/FontAwesome';
export default function Edit(props, { navigation }) {
const [slide, setSlide] = useState(false);
const toggle = () => {
setSlide(!slide);
console.log('clicked');
return (
<View>
<Text>random</Text>
<Text>random</Text>
</View>
);
}
return (
<View>
<FontAwesome name="sliders" size={30} color="#000" onPress={() => toggle()}/>
</View>
}
После тестирования единственное, что он показывает, это сообщение console.log (‘clicked’). Больше ничего не отображается. Также значок отображается нормально. Все работает, кроме и содержимого в этих тегах.
Комментарии:
1. вам не хватает закрытия
)
после</View>
2. Я забыл указать при написании вопроса. в реальном коде я проверил и увидел это там, но в любом случае спасибо
Ответ №1:
Вместо того, чтобы возвращать View
из вашей toggle
функции, вам действительно нужно отобразить этот вид вашей иерархии представлений (например, то, что возвращается из вашего компонента).
Я продемонстрировал в примере, используя троичное выражение — если slide
есть true
, оно отображается, в противном случае нет.
export default function Edit(props, { navigation }) {
const [slide, setSlide] = useState(false);
const toggle = () => {
setSlide(!slide);
console.log('clicked');
}
return (
<View>
<FontAwesome name="sliders" size={30} color="#000" onPress={() => toggle()}/>
{slide ? <View>
<Text>random</Text>
<Text>random</Text>
</View> : null}
</View>
);
}
Пример закуски: https://snack.expo.io/7lVezwWs7