在 React Native 中使用函数更改文本组件的字体大小
Change fontSize for text component with function in React Native
我正在尝试根据剩余时间调整计时器内文本 object 的字体大小。由于要显示的数字较少,我希望文本变大。我遇到的问题是您似乎无法在样式定义中调用函数(请更正我在那里错误陈述的任何内容,我正在努力学习)。一、功能:
CalculateTimeSize = ({ remainingTime }) => {
let TimerTextSize
if( remainingTime < 60 ) {
TimerTextSize = 60
} else if( remainingTime < 3600 ) {
TimerTextSize = 40
} else {
TimerTextSize = 20
}
return TimerTextSize;
}
我的文本组件 header 看起来像这样(完整计时器代码请参阅下面的更新):
<Animated.Text style={{ fontSize: _____________, fontFamily: 'Arial',...>
...
</Animated.Text>
空白处我把我能想到的都试过了包括:CalculateTimeSize(remainingTime), CalculateTimeSize({remainingTime}), {CalculateTimeSize(remainingTime)}, and {CalculateTimeSize({remainingTime})}
很明显,从我四处乱扔花括号的方式来看,我只是不知道自己在做什么。感谢您提供的任何帮助。
更新
用于更好地查看 CalculateTimeSize 函数调用的完整计时器代码:
<CountdownCircleTimer
isPlaying
duration = { 65 }
colors = { ColorScheme.Orange.e }
onComplete = { () => {
console.log('Timer expired')
return [ true, 0 ]
}}
>
{({ remainingTime, animatedColor }) => (
<Animated.Text style={{
fontSize: {CalculateTimeSize(remainingTime)},
fontFamily: 'Arial',
fontWeight: 'bold'
}}>
{FormatTime({ remainingTime })}
</Animated.Text>
)}
</CountdownCircleTimer>
您试图访问一个不存在的变量
这试图de-structure a key from json。但是在调用函数时传递了单个值
CalculateTimeSize = ({ remainingTime }) => { ... }
将上面的改成这样,这样就可以访问传递的实际值了
CalculateTimeSize = (remainingTime) => {
...
}
将函数调用从字体大小更改为此,因为它可能会给出呃错误。 (因为当我尝试在样式表中以您的方式调用函数时出现错误)
fontSize: {CalculateTimeSize(remainingTime)},
...
<Animated.Text style={{
fontSize: CalculateTimeSize(remainingTime),
...
}}>
...
</Animated.Text>
...
我讨厌这种情况发生。我现在确实有工作代码,但我不确定它与我以前拥有的有什么不同,因为我在此过程中尝试了很多不同的东西。我会 post 下面的代码,但我会首先评论似乎让我自己和 Darshan 感到困惑的额外花括号。
我首先在里面放了花括号,因为定时器组件的 GitHub 存储库中的示例代码有它们(如果您想看的话:https://github.com/vydimitrov/react-countdown-circle-timer/tree/master/packages/web#react-countdown-circle-timer)。下面的代码与它们一起工作,没有它们就无法工作。正如 Darshan 所指出的,也许正在发生的事情实际上是解构,但我对解构的理解还不够多,无法说出一种或另一种方式。我确实相信花括号与 CountownCircleTimer 在“幕后”所做的事情有关。同样,我实际上对 component/programming-in-general 的理解还不够深入。我所知道的是我一直在研究代码,最终以下代码起作用了。我希望这在某些时候对某人有所帮助。
<CountdownCircleTimer
isPlaying
duration = { 65 }
colors = { ColorScheme.Orange.e }
size = { 175 }
onComplete = { () => {
console.log('Timer expired')
return [ true, 0 ]
}}
size = { 175 }
trailColor = { ColorScheme.Orange.j }
>
{({ remainingTime, animatedColor }) => (
<Animated.Text style = {{
fontSize: CalculateTimeSize({ remainingTime }),
fontFamily: 'Arial',
fontWeight: 'bold'
}}>
{FormatTime({ remainingTime })}
</Animated.Text>
)}
</CountdownCircleTimer>
CalculateTimeSize = ({ remainingTime }) => {
let TimerTextSize
if ( remainingTime < 11 ) {
TimerTextSize = 90
} else if( remainingTime < 60 ) {
TimerTextSize = 75
} else if( remainingTime < 3600 ) {
TimerTextSize = 50
} else {
TimerTextSize = 35
}
return TimerTextSize;
}
我正在尝试根据剩余时间调整计时器内文本 object 的字体大小。由于要显示的数字较少,我希望文本变大。我遇到的问题是您似乎无法在样式定义中调用函数(请更正我在那里错误陈述的任何内容,我正在努力学习)。一、功能:
CalculateTimeSize = ({ remainingTime }) => {
let TimerTextSize
if( remainingTime < 60 ) {
TimerTextSize = 60
} else if( remainingTime < 3600 ) {
TimerTextSize = 40
} else {
TimerTextSize = 20
}
return TimerTextSize;
}
我的文本组件 header 看起来像这样(完整计时器代码请参阅下面的更新):
<Animated.Text style={{ fontSize: _____________, fontFamily: 'Arial',...>
...
</Animated.Text>
空白处我把我能想到的都试过了包括:CalculateTimeSize(remainingTime), CalculateTimeSize({remainingTime}), {CalculateTimeSize(remainingTime)}, and {CalculateTimeSize({remainingTime})}
很明显,从我四处乱扔花括号的方式来看,我只是不知道自己在做什么。感谢您提供的任何帮助。
更新
用于更好地查看 CalculateTimeSize 函数调用的完整计时器代码:
<CountdownCircleTimer
isPlaying
duration = { 65 }
colors = { ColorScheme.Orange.e }
onComplete = { () => {
console.log('Timer expired')
return [ true, 0 ]
}}
>
{({ remainingTime, animatedColor }) => (
<Animated.Text style={{
fontSize: {CalculateTimeSize(remainingTime)},
fontFamily: 'Arial',
fontWeight: 'bold'
}}>
{FormatTime({ remainingTime })}
</Animated.Text>
)}
</CountdownCircleTimer>
您试图访问一个不存在的变量
这试图de-structure a key from json。但是在调用函数时传递了单个值
CalculateTimeSize = ({ remainingTime }) => { ... }
将上面的改成这样,这样就可以访问传递的实际值了
CalculateTimeSize = (remainingTime) => {
...
}
将函数调用从字体大小更改为此,因为它可能会给出呃错误。 (因为当我尝试在样式表中以您的方式调用函数时出现错误)
fontSize: {CalculateTimeSize(remainingTime)},
...
<Animated.Text style={{
fontSize: CalculateTimeSize(remainingTime),
...
}}>
...
</Animated.Text>
...
我讨厌这种情况发生。我现在确实有工作代码,但我不确定它与我以前拥有的有什么不同,因为我在此过程中尝试了很多不同的东西。我会 post 下面的代码,但我会首先评论似乎让我自己和 Darshan 感到困惑的额外花括号。
我首先在里面放了花括号,因为定时器组件的 GitHub 存储库中的示例代码有它们(如果您想看的话:https://github.com/vydimitrov/react-countdown-circle-timer/tree/master/packages/web#react-countdown-circle-timer)。下面的代码与它们一起工作,没有它们就无法工作。正如 Darshan 所指出的,也许正在发生的事情实际上是解构,但我对解构的理解还不够多,无法说出一种或另一种方式。我确实相信花括号与 CountownCircleTimer 在“幕后”所做的事情有关。同样,我实际上对 component/programming-in-general 的理解还不够深入。我所知道的是我一直在研究代码,最终以下代码起作用了。我希望这在某些时候对某人有所帮助。
<CountdownCircleTimer
isPlaying
duration = { 65 }
colors = { ColorScheme.Orange.e }
size = { 175 }
onComplete = { () => {
console.log('Timer expired')
return [ true, 0 ]
}}
size = { 175 }
trailColor = { ColorScheme.Orange.j }
>
{({ remainingTime, animatedColor }) => (
<Animated.Text style = {{
fontSize: CalculateTimeSize({ remainingTime }),
fontFamily: 'Arial',
fontWeight: 'bold'
}}>
{FormatTime({ remainingTime })}
</Animated.Text>
)}
</CountdownCircleTimer>
CalculateTimeSize = ({ remainingTime }) => {
let TimerTextSize
if ( remainingTime < 11 ) {
TimerTextSize = 90
} else if( remainingTime < 60 ) {
TimerTextSize = 75
} else if( remainingTime < 3600 ) {
TimerTextSize = 50
} else {
TimerTextSize = 35
}
return TimerTextSize;
}