네이티브 및 ES6에 반응합니다. "부모"구성 요소에 모든 상태가 있습니다. 사용자가 "하위"구성 요소의 버튼을 클릭합니다. 그런 다음 GPS 위치 (하나의 함수)를 잡고 AJAX (다른 함수)를 통해 결과를 게시 한 다음 마지막으로 성공 페이지로 리디렉션합니다. 아이는 여기 네비게이터 호출로드 : 예상대로네비게이터 내에서 호출 된 네비게이터와의 네이티브 이슈
<ChildComponent btnClick={this._getGps.bind(this)} />
위가 작동하고 같은 부모 구성 요소 같습니다 예상대로
_getGps() {
navigator.geolocation.getCurrentPosition(
(position) => {
this._postResults(position)
},
(error) => {
console.log(error)
},
{enableHighAccuracy: true, timeout: 2500, maximumAge: 10000}
)
}
위는 작동합니다. 그런 다음 .petch 요청을하는 _postResults를 호출합니다. 또한 잘 작동하고 유효한 응답을 반환합니다. 문제는 응답 함수 내에서 탐색기 개체에 액세스하는 것입니다. . 나는 navigator.replace 및 this.navigator.replace 시도 (범위를 찾을 수 없습니다. 초기 버튼을 클릭 이벤트 외에 이러한 기능()의 모든 부모 요소입니다
_postResults(position) {
fetch('https://my.rest/api', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify(position)
}).then((response) => response.json())
.then((responseJson) => {
// this works fine
this.setState({position:position})
// here is the problem
navigator.replace({
id: 'SomeOtherComponent'
})
})
.catch((error) => console.log(error))
}
네비게이터는 항상 정의되지를
을
빠른 연구를했습니다. 네비게이터는 반응 네이티브에 의해 정의 된 전역 정의 인 것 같습니다. 이 전역 변수는 가져 오기없이 일반적인 기능을 연결할 수있게하는 데 사용됩니다. 예를 들어 fetch()는 이미 바인드 되었기 때문에 가져 오기없이 직접 사용할 수 있습니다. 아래 문서를 확인하십시오. https://github.com/facebook/react-native/blob/4252ac75eaf04aa9d57027e91bf7665717ed4eab/Libraries/Core/InitializeCore.js 많은 것을 설명합니다. –
@BurakKarasoy 예, 확실히 알고 있습니다. 첫 번째 함수 호출은 예상대로 작동합니다. 그러나 전역 범위는 두 번째 함수 호출 이후에 사용할 수 없습니다. 마치 환경이 고립 된 것처럼 보입니다. 확실하지 않은 곳이나 방법. 네비게이터에 대한 참조를 전달하는 데 신경 쓰지는 않지만 모든 시도가 실패했습니다. 어떤 지침을 찾고 있습니다. – thun