亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

觸發 usePosition() 自定義鉤子 onClick 元素

觸發 usePosition() 自定義鉤子 onClick 元素

MMTTMM 2021-12-12 17:56:43
當我嘗試在事件中觸發usePosition鉤子時,我遇到了一些麻煩onClick。我想要實現的是延遲瀏覽器觸發的地理定位權限提示,直到用戶單擊某個元素。到目前為止,我嘗試過的是以下代碼的一系列變體,但沒有成功:const IndexPage = () => {        const [geolocation, setGeolocation] = useState({});        const [isGeolocationActive, triggerGeolocation] = useState(false);        let currentPosition = usePosition();        function handleGeolocation() {            if (isGeolocationActive) {                setGeolocation(currentPosition)                console.log('geolocation', geolocation)            } else triggerGeolocation(true);        }        return (            <Layout>                <Wrapper type={`list`} classNames={`wrapper pet__cards cards__list`}>                    <Card>                        <Image/>                        <div onClick={() => handleGeolocation()}>Click me to share my location</div>我試圖設置一個useState鉤子(最初設置為 false),usePosition如果設置為 true ,它應該控制和處理鉤子,但是一旦我登陸頁面,瀏覽器仍然要求地理定位許可。編輯:我還嘗試將usePosition鉤子放在另一個組件中并將其稱為onClick事件。但是,在這種情況下,我面臨一些鉤子規則錯誤,例如:“無效的鉤子調用。鉤子只能在函數組件的主體內部調用。這可能由于以下原因之一發生......”
查看完整描述

1 回答

?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

最后我usePosition在另一個組件中使用鉤子解決了這個問題,如下所示:


import React from "react";

import {usePosition} from "use-position";


const Geolocation = () => {

    let currentPosition = usePosition();


    return (

        <div>

            <p>{currentPosition.latitude}</p>

        </div>

    )

};

export default Geolocation;

在我的主要組件中,我使用了一個useState鉤子來控制渲染,如下所示:


const IndexPage = () => {

    const [geolocation, setGeolocation] = useState('');


    function handleGeolocation() {

        setGeolocation(<Geolocation/>);

    }


    return (

        <Layout>

            <Card>

                <Image/>

                <div onClick={() => handleGeolocation()}>Click me to share my location</div>

                {geolocation}

                ...


查看完整回答
反對 回復 2021-12-12
  • 1 回答
  • 0 關注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號