我在使用RNSimpleCompass库时遇到了问题
他们提供的示例如下:
import RNSimpleCompass from 'react-native-simple-compass';
const degree_update_rate = 3; // Number of degrees changed before the callback is triggered
RNSimpleCompass.start(degree_update_rate, (degree) => {
console.log('You are facing', degree);
RNSimpleCompass.stop();
});
此代码执行一次,记录手机的方向并停止指南针。
如果我在RNSimpleCompass.stop();
行中添加注释,则每次指南针从上一个方向移动3度或更多度时都会触发该功能,因此我可以正确看到日志。
到目前为止一切顺利。但是,如果我尝试在函数start内更新变量的状态,则看起来状态的更新也会触发该函数,因此我看到很多从触发器到该函数的日志都是不希望的。
import RNSimpleCompass from 'react-native-simple-compass';
const degree_update_rate = 3; // Number of degrees changed before the callback is triggered
RNSimpleCompass.start(degree_update_rate, (degree) => {
console.log('You are facing', degree);
setDegrees(degree); // here I'm updating the variable degrees using the useState hook.
// RNSimpleCompass.stop();
});
我的想法是我想渲染依赖于度数变量的内容,因此每次更改时,我将状态更新为main函数都会重新渲染组件。
我在做什么错?有没有办法阻止状态更新来触发罗盘功能?