Javascript React Native:如何使用ShouldComponentUpdate和setInterval和setState
我正在使用Javascript React Native:如何使用ShouldComponentUpdate和setInterval和setState,javascript,reactjs,react-native,setinterval,setstate,Javascript,Reactjs,React Native,Setinterval,Setstate,我正在使用setInterval的组合,它位于我的componentDidMount函数中,它从API获取数据,并为获取的数据设置一个状态,显示在我的本地映射上。问题是将setInterval与setState一起使用成本太高,因为贴图必须每5秒重新渲染一次 componentDidMount() { this.interval = setInterval(() => { api.getData().then((res) => { th
setInterval
的组合,它位于我的componentDidMount
函数中,它从API获取数据,并为获取的数据设置一个状态,显示在我的本地映射上。问题是将setInterval
与setState
一起使用成本太高,因为贴图必须每5秒重新渲染一次
componentDidMount() {
this.interval = setInterval(() => {
api.getData().then((res) => {
this.setState({
data: res
})
});
}, 5000);
}
我对此进行了研究,发现我应该使用houldComponentUpdate
,但我无法让它正常工作,因为贴图没有正确渲染,在不应该渲染时渲染,在应该渲染时不渲染
shouldComponentUpdate(nextProps, nextState) {
for(var i = 0; i < this.state.data.length; i++) {
if(this.state.data[i].value !== nextState.data[i].value) {
return true;
}
}
return false;
}
shouldComponentUpdate(下一步,下一步状态){
for(var i=0;i
我正在将我拥有的数据状态与下一个状态的数据进行比较,即this.state.data!==nextState.data
,如果是,则返回true
我这样做是否正确,以至于这是一个应该由ComponentUpdate解决的问题,而我只是没有正确编写该函数,还是应该专注于另一个解决方案?飞入的
应该由ComponentUpdate
解决:
- 当组件收到新的
props
- 如果
的长度不同,则您的方法不会检查它。在这种情况下,我们总是希望重新加载nextState
shouldComponentUpdate(下一步,下一步状态){
//举个例子,你需要比较道具里面的实际参数
如果(this.props!==nextrops){
返回true;
}
if(this.state.data.length!==nextState.data.length){
返回true;
}
for(var i=0;i }
数据的内部是什么?@fisna数据是一个包含整数“value”属性和整数“time”属性的对象。答案还取决于组件的道具和另一个状态。我发布了一个答案,它可能不完全适用于您的案例,但您应该了解这个想法。感谢您的回复。我是ReactNative新手,请您解释一下比较this.props和nextrops的作用,以及我们为什么需要它?在大多数情况下,当组件接收到新的props
时,您不想停止重新加载程序。但我没有看到你的部件。它收到道具了吗?是的,收到了。它会收到各种道具,如搜索栏建议、选定的搜索栏项目等@ZainBudhwani,然后您需要检查this.props
中的每个键,就像这样。道具建议!==下一步。建议?谢谢,现在有意义了!