
рдЕрдЧрд░ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЬрд┐рдпреЛрд▓реЛрдХреЗрд╢рди рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ usePosition()
рд░рд┐рдПрдХреНрдЯрд┐рд╡ рд╣реБрдХ usePosition()
ред рд╣реБрдб рдХреЗ рддрд╣рдд, рдпрд╣ рд╣реБрдХ рджреЗрд╢реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдиреЗрд╡рд┐рдЧреЗрдЯрд░.рдЧреЗрдУрд▓реЛрдХреЗрд╢рди рдХреЗ getCurrentPosition()
рдФрд░ watchPosition()
рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рдореИрдВрдиреЗ рд╣реБрдХ рдХрд╛ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдЧрд┐рдЯрд╣рдм рдФрд░ рдПрдирдкреАрдПрдо рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ред
рдХреНрдпреЛрдВ рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рдПрдХ usePosition()
рд╣реБрдХ рдмрдирд╛рдПрдБ
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣реБрдХ рдХреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рд╛рднреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдПрдХ рдЬрдЧрд╣ (рд╣реБрдХ рдореЗрдВ) рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреЛрдб рдЕрдВрд╢реЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рдЕрд╕рдВрдмрдВрдзрд┐рдд рдХреЛрдб рдЯреБрдХрдбрд╝реЗ рдорд┐рд╢реНрд░рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдЯрд╛рд▓рдирд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, componentDidMount()
рд╡рд┐рдзрд┐ред
рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ ( latitude
рдФрд░ longitude
) рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреА рд╕реЗрд╡рд╛ рд╕реЗ рдореМрд╕рдо рдХреЗ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдпрд╛ рд╡рд░реНрддрдорд╛рди рддрд╛рдкрдорд╛рди рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВред рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдЗрди рджреЛ рдХрд╛рд░реНрдпрд╛рддреНрдордХрддрд╛рдУрдВ (рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдФрд░ рддрд╛рдкрдорд╛рди рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛) рдХрд╛ рдХреЛрдб рдЕрдХреНрд╕рд░ рдПрдХ componentDidMount()
рдкрджреНрдзрддрд┐ рдХреЗ рдЕрдВрджрд░ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, componentWillUnmount()
WillUnmount () рд╡рд┐рдзрд┐ рдЖрдорддреМрд░ рдкрд░ " рдХреНрд▓реАрди рдЕрдк" рд╣реЛрддреА рд╣реИ, рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реНрдерд╛рди рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП clearWatch () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЖрдХрд╛рд░ рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИ, рдХреЛрдб рдХреЗ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ (рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕реНрдерд╛рди рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рд╕реЗ рдЕрд▓рдЧ рд╕реЗ рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдирд╛ рдФрд░ рдЕрдирд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░рдирд╛), рдФрд░ рдХреЛрдб рдХреЗ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рдЬреБрдбрд╝реЗ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдПрдХ рд╡рд┐рдзрд┐ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ (рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдФрд░ рддрд╛рдкрдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛)ред рдбрд┐рдмрдЧрд┐рдВрдЧ рдФрд░ рд╕рдорд░реНрдерди рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝рдирд╛ рдХреЛрдб рдореБрд╢реНрдХрд┐рд▓ рд╣реИред
рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз рдХрдард┐рдирд╛рдЗрдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рдПрдХ рдЕрд▓рдЧ usePosition()
рд╣реБрдХ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдЬреБрдбрд╝реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред
рд╣рдо рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ usePosition()
рд╣реБрдХ
рдЪрд▓реЛ "рд╡рд┐рдкрд░реАрдд рд╕реЗ" рдЬрд╛рдПрдВ рдФрд░ рд╣реБрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдВ рдХрд┐ рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗред рдЗрд╕рд╕реЗ рд╣рдореЗрдВ рд╣реБрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреА (рдпрд╣ рдХреНрдпрд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдЧрд╛ рдФрд░ рдХреНрдпрд╛ рд▓реМрдЯрдирд╛ рд╣реЛрдЧрд╛)ред
рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддрд╛ рд╣реИ:
import React from 'react';
usePosition()
рд╣реБрдХ рдХреЗ рд╕рд╛рде рд╕рд┐рд░реНрдл рдПрдХ рд▓рд╛рдЗрди рдФрд░ рд╣рдо latitude
рдФрд░ longitude
рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдордиреЗ рдпрд╣рд╛рдВ рднреА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдЯреНрд░реИрдХрд┐рдВрдЧ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ, рд╕рд╛рде рд╣реА рдПрдХ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рджрд╕реНрдпрддрд╛, рдПрдХ usePosition()
рд╣реБрдХ рдореЗрдВ usePosition()
ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдЬрд╛рджреВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдХрд░реЗрдЧрд╛ред рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ null
рдпрд╛ undefined
ред рдЬреИрд╕реЗ рд╣реА рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рдШрдЯрдХ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╕реНрдХреНрд░реАрди рдкрд░ рджреЗрдЦреЗрдВрдЧреЗред
usePosition()
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди usePosition()
рд╣рдорд╛рд░рд╛ usePosition()
рд╣реБрдХ рдПрдХ рдирд┐рдпрдорд┐рдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
рд╣рдо рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рдЖрдВрддрд░рд┐рдХ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдпреВрдЬрд╝рд╕реНрдЯреЗрдЯ () рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЯреНрд░реИрдХрд┐рдВрдЧ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╕реЗ рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рдФрд░ рд╕рджрд╕реНрдпрддрд╛ рд░рджреНрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
import { useState, useEffect } from 'react'; export const usePosition = () => {
рд╣рдо рд░рд╛рдЬреНрдп рдЪрд░ рдмрдирд╛рдПрдВрдЧреЗ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдпрд╛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВрдЧреЗ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреЗ рд╕реНрдерд╛рди рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ)ред
import { useState, useEffect } from 'react'; export const usePosition = () => { const [position, setPosition] = useState({}); const [error, setError] = useState(null);
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЗрд╕ рд╕реНрддрд░ рдкрд░ рд╣рдо рдЙрди рдЪрд░ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╣реБрдХ рд╕реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИрдВред рдЕрдм рддрдХ, рдЗрди рдЪрд░реЛрдВ рдореЗрдВ рдХреБрдЫ рднреА рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рдЬрд▓реНрдж рд╣реА рдареАрдХ рдХрд░ рджреЗрдВрдЧреЗред
import { useState, useEffect } from 'react'; export const usePosition = () => { const [position, setPosition] = useState({}); const [error, setError] = useState(null);
рдФрд░ рдЕрдм рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрд╖рдг рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╣реЛ рд░рд╣рд╛ рд╣реИред
import { useState, useEffect } from 'react'; export const usePosition = () => { const [position, setPosition] = useState({}); const [error, setError] = useState(null);
useEffect()
рд╣реБрдХ рдореЗрдВ, рд╣рдо рдкрд╣рд▓реЗ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП useEffect()
рд╣реИрдВ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдордиреНрд╡рдп рдкрд╣рдЪрд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрджрд┐ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╣реБрдХ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреЗ рд╣реИрдВред рдЕрдиреНрдпрдерд╛, рд╣рдо onError()
рдФрд░ onError()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдЬрд┐рдпреЛрд▓реЛрдХреЗрд╢рди рдХреЛ рдмрджрд▓рдиреЗ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддреЗ рд╣реИрдВ (рд╣рдо рдЙрдирдХреЗ рдХреЛрдб рдХреЛ рдиреАрдЪреЗ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ)ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ useEffect()
рд╣реБрдХ рд╕реЗ, рд╣рдо рдПрдХ рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ рдпрджрд┐ рдШрдЯрдХ рдкреНрд░рджрд░реНрд╢рди рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд╣рдо рдирд┐рдЧрд░рд╛рдиреА рд╕реЗ рдЕрдирд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддрд╛рдХрд┐ рдореЗрдореЛрд░реА рдмрдВрдж рди рд╣реЛред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕реЗ рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рдФрд░ рд╕рджрд╕реНрдпрддрд╛ рд░рджреНрдж рдХрд░рдиреЗ рдХрд╛ рдкреВрд░рд╛ рддрд░реНрдХ рдПрдХ usePosition()
рд╣реБрдХ рдореЗрдВ рд╣реИред
рдЪрд▓рд┐рдП рдЧрд╛рдпрдм рдХреЙрд▓рдмреИрдХ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
import { useState, useEffect } from 'react'; export const usePosition = () => { const [position, setPosition] = useState({}); const [error, setError] = useState(null); const onChange = ({latitude, longitude}) => {
usePosition()
рд╣реБрдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред
рдЕрдВрдд рдореЗрдВ
рдЖрдк рд╣реБрдХ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдЗрд╕рдХреЗ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ GitHub рдкрд░ рдЯреНрд░реИрдХрд┐рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд░рд╣рд╛ рд╣реЛрдЧрд╛ред рд╕рдлрд▓ рдХреЛрдбрд┐рдВрдЧ!