reactjs - 如何从 UseEffect Hook 返回值

标签 reactjs arguments parameter-passing use-effect

我从 Use Effect Hook (我对它比较陌生)获取纬度和经度。我想返回使用效果 Hook 之外的值,并将它们存储在变量中,甚至在需要时存储在状态中。我可以控制台记录这些值,但我只是添加一个返回语句还是以某种方式传递参数?我需要使用什么功能?我计划将纬度和经度数据传递到代码的其他部分,这就是我尝试从 useEffect Hook 中检索它的原因。

useEffect(() => {
    if ("geolocation" in navigator) {
      console.log("Available");
    } else {
      console.log("Not Available");
    }
    navigator.geolocation.getCurrentPosition(function (position) {
      let lat = position.coords.latitude;
      let long = position.coords.longitude;
      console.log(lat);
      console.log(long);
    });
  }, []);
let newLat = lat?
let newLong = long?

最佳答案

您可以将它们保存在状态或引用 Hook 中。

下面是我将如何使用引用 Hook 来实现:

const lat = useRef(null);
const long = useRef(null);

useEffect(() => {
    if ("geolocation" in navigator) {
      console.log("Available");
    } else {
      console.log("Not Available");
    }
    navigator.geolocation.getCurrentPosition(function (position) {
      lat.current = position.coords.latitude;
      long.current = position.coords.longitude;
      console.log(lat);
      console.log(long);
    });
  }, []);

然后您可以使用 .current 访问 latlong 值。更改它们不会触发重新渲染。

如果你想使用状态你可以这样做

const [lat, setLat] = useState(null);
const [long, setLong] = useState(null);

useEffect(() => {
    if ("geolocation" in navigator) {
      console.log("Available");
    } else {
      console.log("Not Available");
    }
    navigator.geolocation.getCurrentPosition(function (position) {
      setLat(position.coords.latitude);
      setLong(position.coords.longitude);
      console.log(lat);
      console.log(long);
    });
  }, [setLat, setLong]);

您可以像使用任何正常状态一样使用它们。

还要确保在尝试使用它们时它们的值不为空。

关于reactjs - 如何从 UseEffect Hook 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68395531/

相关文章:

javascript - javascript 中的函数...帮我连接点

python - 检查 Python 类中必需参数的最佳方法

php - 将变量传递给 __wakeup()

javascript - 为什么空参数没有被识别为未定义?

css - 获取 ReactJS 元素的字体颜色

reactjs - Reanimated 2 Hook 中依赖参数的更好用例是什么?

javascript - React 网站导航栏

reactjs - 在 React JS 中,我如何告诉父组件子组件发生了什么事?

带有可选参数的 powershell 调用方法

python - 为什么 *args 参数拆包给出一个元组?