Reactjs 太多的重新渲染。React限制渲染的数量以防止无限循环滑块

Reactjs 太多的重新渲染。React限制渲染的数量以防止无限循环滑块,reactjs,react-native,Reactjs,React Native,我有一个滑块,当它移动以指定某个值时,它会抛出 Invariant Violation:Toomany re-renders 这是密码 const [term, setvterm] = useState(); if( Value > 0) setvterm(Value) <View style={{alignItems: 'stretch', justifyContent: 'center' }}> <Slider maximumValue

我有一个滑块,当它移动以指定某个值时,它会抛出

Invariant Violation:Toomany re-renders
这是密码

    const [term, setvterm] = useState();

if( Value > 0) setvterm(Value)

<View style={{alignItems: 'stretch', justifyContent: 'center' }}>
    <Slider 
    maximumValue={D > 0 ? 3: 2 }
    minimumValue={0}
    step={1}
    value={valuesFromApi.indexOf(Value)}
    onValueChange={index => setValue(valuesFromApi[index])} 
    />
    <View style={styles.plazos}>
    <Text style={styles.plazo1}>{A} meses</Text>
    <Text style={styles.plazo2}>{B} meses</Text>
    <Text style={styles.plazo3}>{C} meses</Text>
    {D > 0 ? <Text style={styles.plazo3}>{D} meses</Text>: null }
    </View>
    <Text style={styles.slideText}>Su credito por:  ${A}MXN</Text>
    <Text style={styles.slideText}>Usted recibe:    ${A}MXN</Text>
    <Text style={styles.slideText}>A un plazo de:  {Value} meses</Text>

    <Text style={styles.PaymentText}>Su pago: ${A}.00 MXN</Text>
</View>

但这是我发现的将值传递给术语的唯一方法。当设置值、渲染、然后再次设置值等的无限循环时,就会发生这种类型的错误。解决方案是确保仅在值更改时重新渲染。您需要跟踪上一个值。这里有一篇文章解释了如何做到这一点:

是的,因为您更新了每个渲染的状态,所以有一个无限的渲染循环。您可能需要一个
useffect
钩子来在
Value
更新时发出副作用。什么是
terms
?在这一点上,terms什么都不是,但这是我必须发送给APIs的变量名,而不是
if(Value>0)setvterm(Value)
函数中的
setValue
项?您可以使用类似的方法来处理这个问题:
if(Value>0&&Value!==term){setvterm(Value))
   if( Value > 0) setvterm(Value)