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)