老师,求助
来源:1-1 课前必读(不看会错过一个亿)
慕尼黑0536602
2021-04-16
嗨老师,
我做了一个Read More的Component ,用于展示文字,当文字超过2行的时候,显示省略号+“Read more”的标识 ; 当点击“Read more ”之后,会展开全部。现在有个问题,就是当文字少于2两行的时候,我需要去除“Read more”这和标识。。但是我试了好多种方法都去不掉。能麻烦帮我看下代码吗?谢谢你。
这是ReadMore的component :(txt_content:为需要展示的文字;num_lines:限制展示行数)
import React,{useState} from 'react';
import { StyleSheet, Text, TextInput, View } from 'react-native'
import colors from '../config/colors';
function ReadMore({txt_content,num_lines}) {
const [read,setRead] =useState(false);
const[text,setText] = useState(num_lines);
const[read_less,set_read_less] =useState(false);
return (
<View style={styles.container}>
<TextInput
style={styles.txt}
numberOfLines = {text}
>{txt_content}</TextInput>
<View style={styles.read_container}>
{!read&&<Text style={styles.read_more}onPress = {()=>{setText(null);setRead(true);set_read_less(true)}}>Read More</Text> }
{read_less&&<Text style={styles.read_more}onPress = {()=>{setText(2);set_read_less(false);setRead(false)}}>Read Less</Text>}
</View>
</View>
);
}
const styles = StyleSheet.create({
container : {
flex : 1,
},
read_container : {
flex :1,
alignItems : 'center',
padding : 5,
},
txt : {
fontSize : 16,
color : colors.medium,
textAlign : 'center',
},
read_more : {
color : colors.primary,
fontSize : 16,
},
})
export default ReadMore;
写回答
1回答
-
慕尼黑0536602
提问者
2021-04-16
我试了很久,还是硬生生给整出来来,解决方案如下,分享给大家,以后如果有需要的同学可以参考:
import React,{useState} from 'react'; import { StyleSheet, Text, View } from 'react-native' import colors from '../config/colors'; function ReadMore({txt_content="",num_lines}) { const [read,setRead] =useState(false); const[text,setText] = useState(num_lines); const[read_less,set_read_less] =useState(false); const num_txt = txt_content.length; return ( <View style={styles.container}> <Text style={styles.txt} numberOfLines = {text} >{txt_content}</Text> {(num_txt>=70)&&( <View style={styles.read_container}> {!read&&<Text style={styles.read_more}onPress = {()=>{setText(null);setRead(true);set_read_less(true)}}>Read More</Text> } {read_less&&<Text style={styles.read_more}onPress = {()=>{setText(2);set_read_less(false);setRead(false)}}>Read Less</Text>} </View> )} </View> ); } const styles = StyleSheet.create({ container : { flex : 1, }, read_container : { flex :1, alignItems : 'center', padding : 5, }, txt : { fontSize : 16, color : colors.medium, textAlign : 'center', }, read_more : { color : colors.primary, fontSize : 16, }, }) export default ReadMore;
122021-04-16
相似问题